我有一个与-rtsopts
相关联的程序,并使用+RTS -s
进行调用,并且我得到了这个时间:
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 :(得分:6)
挂钟时间包括等待网络,磁盘,用户输入等所花费的时间,而CPU时间仅包括主动花费在(确切地说)一个CPU上的时间。 (在多个CPU上进行计算时,将每个CPU上花费的时间加在一起。)