我有几种方法是相互独立的,我很好奇哪种方法是同时执行它们的最佳方法。我尝试了下面的这些方法,并对每一种方法进行计时,时间似乎是完全相同的,所以我不确定我是否做错了什么.?
此外,这是一个web应用程序,在用户单击按钮后调用这些方法。C#、aspx
method1(var1, var2, var3); // takes 5 seconds to run
method2(var1, var2, var3); // takes about 1-2 seconds to run
初审:
//Entered my methods one right after another
method1(var1, var2, var3);
method2(var1, var2, var3);
//timed the execution and overall took ~5-6 seconds to run and display results
第二次审判:
//used Google and found something called Parallel
Parallel.Invoke(() =>
{
method1(var1, var2, var3);
},
() =>
{
method2(var1, var2, var3);
});
//~5-6 seconds to run and display results
第三次审判:
//used Google and found something called Tasks
Task task1 = Task.Factory.StartNew(() => method1(var1, var2, var3));
Task task2 = Task.Factory.StartNew(() => method2(var1, var2, var3));
Task.WaitAll(task1, task2);
//~5-6 seconds to run and display results
第四次审判(类似于第三次审判):
//used Google and found something called Tasks
Task[] tasks = new Task[2]
{
Task.Factory.StartNew(() => method1(var1, var2, var3)),
Task.Factory.StartNew(() => method2(var1, var2, var3))
};
Task.WaitAll(tasks);
//~5-6 seconds to run and display results
任何建议或帮助都是非常感谢的。谢谢!
发布于 2014-11-24 17:14:51
你的第三次和第四次测试也是一样的。你的第二个测试在功能上相当于另外两个测试。
您的方法应该并行运行(即使存在无保证 )。
但是,您似乎没有以任何有意义的精确性来计时这些测试。尝试从这些方法中打印消息,在开始和结束时,我相信您将在method2
完成之前看到method1
开始。
https://stackoverflow.com/questions/27110129
复制相似问题