次のコードは、Thread オブジェクトと Stopwatch オブジェクトのリストを使用した並列テストを示しています。これは、(Parallel.Invoke とは異なり) 並列実行の試行を保証し、ThreadPool IMO を使用するよりもセットアップが簡単であるため、テストするのに非常に適した方法だと思います。
public static void SomeMethodThatLoadsUserData()
{
Stopwatch s = new Stopwatch();
s.Start();
List<Thread> threads = new List<Thread> {new Thread(Method1), new Thread(Method2)};
foreach (Thread thread in threads)
{
thread.Start();
}
foreach (Thread thread in threads)
{
thread.Join();
}
s.Stop();
Console.WriteLine("Total: {0} ms", s.ElapsedMilliseconds);
Console.ReadKey();
}
private static void Method1()
{
Stopwatch s = new Stopwatch();
s.Start();
// do work
Thread.Sleep(1000);
s.Stop();
Console.WriteLine("Method 1: {0} ms", s.ElapsedMilliseconds);
}
private static void Method2()
{
Stopwatch s = new Stopwatch();
s.Start();
// do work
Thread.Sleep(1000);
s.Stop();
Console.WriteLine("Method 2: {0} ms", s.ElapsedMilliseconds);
}
出力:
Method 1: 999 ms
Method 2: 999 ms
Total: 1051 ms
(うまくいけば)Total
各メソッドの合計よりも少ない場合、時間の節約が表示されます。