【发布时间】:2012-05-09 18:32:55
【问题描述】:
我正在进行一些实验,对它们进行计时并比较时间以找到最佳“算法”。出现的问题是并行运行任务是否会使实验的相对运行时间错误,以及我是否可以通过按顺序运行它们来获得更具代表性的结果。这是代码的(简化)版本:
public static void RunExperient(IEnumerable<Action> experiments)
{
Parallel.ForEach(experiments, experiment =>
{
var sw = Stopwatch.StartNew(); //line 1
experiment(); //line 2
sw.Stop(); //line 3
Console.WriteLine(@"Time was {0}", sw.ElapsedMilliseconds);
});
}
我的问题是关于“幕后”发生的事情:
任务启动后,操作系统或框架是否有可能在任务执行期间暂停任务并继续执行,导致实验的运行时间全部出错?
按顺序运行实验能否获得更具代表性的结果?
【问题讨论】:
标签: performance c#-4.0 task-parallel-library benchmarking