在主线程上对基准进行基准测试

时间:2013-11-28 15:57:35

标签: c# asp.net entity-framework

我想比较使用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

1 个答案:

答案 0 :(得分:0)

因为你也在第二个样本中启动了sw1

var sw2 = new Stopwatch();
sw1.Start();