我想比较使用Task
之间的性能差异,而不是下面的示例中的性能差异。我知道任务已成功执行,因为我可以在停止第二个计时器之前使用他们的结果。
我想知道为什么我的上一个例子写了0
ms:
private Task<List<ACTION>> GetActions()
{
return Task.Factory.StartNew(() =>
{
using (var context = new DbContext())
{
return context.ACTION.ToList();
}
});
}
-
var sw1 = new Stopwatch();
sw1.Start();
var sync1 = context.ACTION.ToList();
var sync2 = context.ACTION.ToList();
sw1.Stop();
Debug.WriteLine(sw1.ElapsedMilliseconds); //4XX MS
var sw2 = new Stopwatch();
sw1.Start();
var t1 = GetActions();
var t2 = GetActions();
var tasks = new Task[] { t1, t2 };
Task.WaitAll(tasks);
sw2.Stop();
Debug.WriteLine(sw2.ElapsedMilliseconds); //0 MS
答案 0 :(得分:0)
因为你也在第二个样本中启动了sw1
。
var sw2 = new Stopwatch();
sw1.Start();