private void do_timed(stopwatchdelegate func, int num_iterations) { // initialize the times to 0 long time_NeverUseThreads = 0; long time_AlwaysUseThreads = 0; long time_MaybeUseThreads = 0; // run the tests for (int i = 0; i < num_iterations; i++) { multicore.Mode = MultiCoreMode.AlwaysUseThreads; time_AlwaysUseThreads += timeit(func); multicore.Mode = MultiCoreMode.NeverUseThreads; time_NeverUseThreads += timeit(func); multicore.Mode = MultiCoreMode.UseThreadsIfMultipleProcessorsPresent; time_MaybeUseThreads += timeit(func); } Console.WriteLine("ProcessorCount: {0}", System.Environment.ProcessorCount); Console.WriteLine("NeverUseThreads: {0}", time_NeverUseThreads); Console.WriteLine("AlwaysUseThreads: {0}", time_AlwaysUseThreads); Console.WriteLine("MaybeUseThreads: {0}", time_MaybeUseThreads); Console.WriteLine("Improvement: {0}%", (time_NeverUseThreads - time_AlwaysUseThreads) * 100 / time_NeverUseThreads); }
private static long timeit(stopwatchdelegate func) { Stopwatch sw = new Stopwatch(); sw.Start(); func(); sw.Stop(); return(sw.ElapsedMilliseconds); }