検証用スクリプト
using System;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Threading.Tasks;
internal static class Program
{
private static void Main()
{
var count = 1000000000;
var rangePartitioner = Partitioner.Create( 0, count );
var sw1 = new Stopwatch();
sw1.Start();
for ( int i = 0; i < count; i++ )
{
}
sw1.Stop();
Console.WriteLine( sw1.Elapsed.TotalSeconds );
var sw2 = new Stopwatch();
sw2.Start();
Parallel.ForEach
(
rangePartitioner, ( range, loopState ) =>
{
for ( int i = range.Item1; i < range.Item2; i++ )
{
}
}
);
sw2.Stop();
Console.WriteLine( sw2.Elapsed.TotalSeconds );
}
}
検証結果
|
for |
Partitioner.Create |
100,000 回 |
0.000158 秒 |
0.001174 秒 |
10,000,000 回 |
0.015897 秒 |
0.006757 秒 |
1,000,000,000 回 |
1.678962 秒 |
0.578945 秒 |
参考サイト様