1
當我用Plinq(並行linq)嘗試對象集合時,我得到了一個基本問題,並且我觀察到Plinq Vs正常操作在執行時間方面沒有太大差異。任何人都可以檢查我的代碼,並告訴我爲什麼發生這種情況。我已經在i7處理器中運行此代碼。並行Linq到對象集合
class Program
{
static void Main(string[] args)
{
new Program().Plinq();
new Program().linq();
Console.ReadLine();
}
void Plinq()
{
DateTime startTime = DateTime.Now;
var query1 = (from port in new XpressEntities().Portfolios.Take(1000000)
select new port { PortId = port.PORT_ID, CFAC = port.CFAC }).ToList<port>();
query1.AsParallel().Where(e => e.PortId == 0);
TimeSpan ts = DateTime.Now.Subtract(startTime);
Console.WriteLine("Time Elapsed: {0} Seconds:MilliSeconds in Paralel mode", ts.Seconds + ":" + ts.Milliseconds);
}
void linq()
{
DateTime startTime = DateTime.Now;
var query1 = (from port in new XpressEntities().Portfolios.Take(1000000)
select new port { PortId = port.PORT_ID, CFAC = port.CFAC }).ToList<port>();
query1.Where(e => e.PortId == 0);
TimeSpan ts = DateTime.Now.Subtract(startTime);
Console.WriteLine("Time Elapsed: {0} Seconds:MilliSeconds in Normal mode", ts.Seconds + ":" + ts.Milliseconds);
}
}
class port
{
public int PortId { get; set; }
public string CFAC { get; set; }
}
結果的上述代碼是
經過時間:6:411秒:毫秒模式相同常
經過時間:6:68秒:毫秒正常模式
我希望你的大部分時間都在分配'var query1',這對於兩者都是相同的。 – 2012-01-05 15:48:00
這是正確的。您應該只測量「Where」(使用秒錶類) – 2012-01-05 15:53:20