2013-11-28 53 views
0

我想比較使用Task而不是以下示例中的性能差異。我知道這些任務已經成功執行,因爲我可以在停止第二個計時器之前利用它們的結果。主線程上的基準測試任務

我想知道爲什麼我的最後一個例子寫0 MS:

private Task<List<ACTION>> GetActions() 
{ 
    return Task.Factory.StartNew(() => 
    { 
     using (var context = new DbContext()) 
     { 
      return context.ACTION.ToList(); 
     } 
    }); 
} 

- 因爲你的第二個樣本中啓動sw1以及

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

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

* facepalm *,那當你累了的時候會發生什麼。謝謝 :) – Johan