2015-06-27 29 views
1

我有一個程序-rtsopts結合,並與+RTS -s和定時叫我得到這個:在GHC的RTS統計信息中CPU時間如何低於掛鐘時間?

INIT time 0.000s ( 0.001s elapsed) 
    MUT  time 4.047s ( 9.694s elapsed) 
    GC  time 0.578s ( 0.514s elapsed) 
    RP  time 0.000s ( 0.000s elapsed) 
    PROF time 0.000s ( 0.004s elapsed) 
    EXIT time 0.000s ( 0.000s elapsed) 
    Total time 4.625s (10.209s elapsed) 

這個項目是約10秒運行。 它與螺紋RTS鏈接,但它使用-N1,所以我不明白爲什麼壁鐘時間和CPU時間之間存在差異。

而且我剛剛發現這個GHC用戶指南:

接下來是CPU時間和掛鐘時間流逝由 細分哪些運行時系統當時做的事情。

那麼,CPU時間低於掛鐘時間的意義如何?

注意:我的計算機在執行我的程序時沒有做任何辛苦的工作,當然沒有那麼多..這就是爲什麼我很困惑,擔心我的程序行爲不當。

更新:我想我可能已經找到了罪魁禍首:RTS是否計算IO的CPU時間?如果它不那麼這可能是原因,那麼有很多寫道。

+0

CPU時間是系統分配給您的應用程序的時間。牆上時鐘是我們在地球上使用的真實時間(愛因斯坦可能有一些事情要說)。所以你的應用程序的可用時間不到100%(僅約45%)。其餘的花在別的東西上。 –

+0

@NorbertvanNobelen該程序完全外部的東西?我問,因爲我的電腦在執行過程中沒有做任何辛苦的工作,會花費那麼多資源,所以對我而言有點奇怪,我有點擔心這是我的程序行爲不端。 – MasterMastic

回答

6

掛鐘時間包括花在等待網絡,磁盤,用戶輸入等等上的時間,而CPU時間只包括在一個CPU上精確計算某些東西的時間。 (當在多個CPU上計算時,每個CPU上花費的時間相加。)

相關問題