驚くべきことに、私が作成した小さなテスト ケースでは、PLINQ を使用してもメリットはありませんでした。実際、通常の LINQ よりもさらに悪かったのです。
テストコードは次のとおりです。
int repeatedCount = 10000000;
private void button1_Click(object sender, EventArgs e)
{
var currTime = DateTime.Now;
var strList = Enumerable.Repeat(10, repeatedCount);
var result = strList.AsParallel().Sum();
var currTime2 = DateTime.Now;
textBox1.Text = (currTime2.Ticks-currTime.Ticks).ToString();
}
private void button2_Click(object sender, EventArgs e)
{
var currTime = DateTime.Now;
var strList = Enumerable.Repeat(10, repeatedCount);
var result = strList.Sum();
var currTime2 = DateTime.Now;
textBox2.Text = (currTime2.Ticks - currTime.Ticks).ToString();
}
結果?
textbox1: 3437500
textbox2: 781250
したがって、LINQ は PLINQ よりも短い時間で同様の操作を完了できます。
私は何を間違っていますか?それとも、私が知らないひねりがありますか?
編集:ストップウォッチを使用するようにコードを更新しましたが、同じ動作が持続しました。JIT の効果を割り引くために、実際に と と の両方を順不同でクリックしてみましbutton1
たbutton2
。得られた時間は異なる可能性がありますが、質的な動作は変わりませんでした。この場合、PLINQ は確かに低速でした。