我正在使用parallel.foreach运行200个数学任务。 什么是最有效的方法呢?
List<Task<double>> actions = new List<Task<double>>(200)
{
Task<Double>.Factory.StartNew(() =>Tree.calc0(features)),
Task<Double>.Factory.StartNew(() =>Tree.calc1(features)),
..................
...................
}
Parallel.ForEach(actions, (action) => { result += action.Result; });
我希望它运行时间不超过0.5秒。当前表现 - &gt; 2.5秒 谢谢!
答案 0 :(得分:2)
Factory.StartNew
不仅创建了任务,而且还在运行它。
您甚至不需要创建任务,只需在calc
循环内调用ForEach
。
您实际上需要在不运行任务的情况下创建任务
Task<double> x = new Task<double>(() => Tree.calc0(features));
然后在 Parallel.ForEach
开始操作。