2011-10-20 349 views
5

如何在文本框或輸出中打印程序運行的時間?運行程序的時間花費

我希望它能夠顯示在for-loop中,以獲得每個for-loop需要多少時間。

+1

看看這篇文章:用秒錶計時類C#功能性能(http://www.dijksterhuis.org/timing-function-performance-stopwatch-class/) – R0MANARMY

+0

嗯,你設置計時器,運行程序,停止計時器,然後在文本框中輸入時間。簡單!更嚴重的是,請嘗試http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx和'.Subtract()' – alf

回答

12

你可以嘗試:

DateTime dt = DateTime.Now; 
for (.......) 
{ 
} 
TimeSpan ts = DateTime.Now - dt; 
textbox1.Text = ts.TotalMilliseconds.ToString(); 

或(根據MSDN)如果你需要更好的分辨率

Stopwatch stopWatch = new Stopwatch(); 
stopWatch.Start(); 
for (.......) 
{ 
} 
stopWatch.Stop(); 
textbox1.Text = stopWatch.ElapsedMilliseconds.ToString(); 
+3

[MSDN](http://msdn.microsoft.com/en-us/library/system.datetime。 now.aspx)文檔特別建議使用DateTime類進行基準測試**。 – R0MANARMY

+0

@ R0MANARMY:是的,你說得對。我編輯了我的帖子,包括兩個解決方案謝謝 – Marco

+0

你可以直接使用'stopWatch.ElapsedMilliseconds'並擺脫中間的TimeSpan轉換 – sll

10
var watch = System.Diagnostics.Stopwatch.StartNew(); 

for() 
{ 
// .. 
} 

watch.Stop(); 

// Format 00:00:02.0001008 
string elapsed = watch.Elapsed.ToString();  

// Milliseconds like 2000 for 2 seconds 
string elapsedMs = watch.ElapsedMilliseconds.ToString(); 

System.Diagnostics.Debug.WriteLine(elapsed); 
+0

+1,因爲您的答案是第一個,它是正確!! – Marco

0

這樣的事情:?

DateTime start = DateTime.UtcNow; 

//... processing ... 

DateTime end = DateTime.UtcNow; 

Syste.Diagnostics.Debug.WriteLine((end - start).ToString()); 
+1

[MSDN](http://msdn.microsoft.com/zh-cn/library/system.datetime.now.aspx)文檔特別建議**使用DateTime類進行基準測試。 – R0MANARMY

+1

當然,我知道有更好的計時器,這是很好,如果你想看到秒或分鐘... :) –

0

你可以存儲在應用程序啓動時的當前日期時間,然後創建一個定時器每秒都會發生。當它觸發時,你會得到當前的DateTime,減去它們以獲得TimeSpan並使用它來填充你的文本框。

+0

這不就是數秒嗎? – R0MANARMY

+0

您每秒更新一次輸入框,而不是測量時間範圍。 – TJHeuvel

0

添加這兩行 - 在您的For循環之間或您想要測試函數速度的代碼之間。

Debug.WriteLine(DateTime.Now.ToLongTimeString()); 

    --your code 

Debug.WriteLine(DateTime.Now.ToLongTimeString()); 
+0

這將不準確,因爲您不僅需要測量代碼執行的時間,而且還需要多長時間才能將DateTime轉換爲字符串+運行代碼。如果代碼在幾分鐘內運行幾毫秒將不重要,但如果運行時間較短,則可能會產生差異。 – R0MANARMY

+0

@Romanarmy,你是對的,如果它是一種時間關鍵的核項目。而且你知道我們每天開發的大多數項目都是核應用程序。 –

+0

不,但是我們都編寫了一個在嚴格循環中執行的代碼,並且效率較低意味着糟糕的用戶體驗,因爲每次用戶單擊按鈕時UI都會鎖定一秒。 – R0MANARMY