2012-06-18 30 views
3

在評估我的算法相對於另一個時間方面,我應該使用Java中的CPU還是用戶時間?我在這裏所使用的信息:How to get CPU, system, and user time for benchmarking,讓這些價值觀......CPU時間,或用於計算機科學實驗的Java用戶時間?

這裏,我們去:

"User time" is the time spent running your application's own code. 
"System time" is the time spent running OS code on behalf of your application (such as for I/O). 

我們經常提及的 「CPU時間」 以及:

"CPU time" is user time plus system time. It's the total time spent using a CPU for your application. 

哪個最適合CS實驗?

+1

已經做了,請原諒,我是這個網站的新手。 –

+0

感謝您的回覆,我想我會用「CPU時間」,這似乎是一個不錯的選擇。 –

回答

3

當然,這取決於你的算法。

如果你的算法本身沒有執行I/O,用戶時間是衡量它有多好的最準確的度量。

但是,如果您的算法確實爲例如基於磁盤的排序,那麼包含I/O的時間更合適。

請注意,雖然Java VM本身也運行自己的代碼,最顯着的是GC,從操作系統的角度來看,它也算作用戶時間,所以如果你想要真正徹底,你可以儘量減少通過記錄GC運行時間並從操作系統測量的用戶時間減去GC的影響。 (另一方面,如果兩種算法在相同的條件下運行,並且觸發的GC運行速度遠遠超過其他算法,那麼算法本身就是一個錯誤。)

更新:對不起,我剛剛讀過您鏈接的頁面,當然如果您測量線程的用戶時間,則僅當您查看整個(重量級)過程的用戶時間時,上述內容才適用。

2

經常流逝的時間是唯一重要的事情。如果您可以編寫一個使用多個內核的程序(這會增加CPU時間),但會減少用戶等待的時間,這是更可取的。消逝時間包括IO,用戶和系統時間。