Achieving Speedups with Small Parallel Loop Bodies より。 イテレーションが小さいときにうかつに Parallel にするとかえってパフォーマンスが悪くなる可能性があります。 例としてこんなコードが載っています。 int[] array = new int[100000000]; Parallel.For(0, array.Length, i => { array[i] = i * i * i; }); これだと 「array[i] = i*i*i;」 というだけのコードをパラレルにものすごい回数実行するため、パラレルのオーバーヘッドがしゃれにならないくらい大きくなってしまうわけですね。 普通の for ループにしてしまえばパラレルにするオーバーヘッドは無くなりますが、それではスレッド一つしか使わないためもったいないです。 上記の記事では、