1

私は次のようなコードを持っています:

start <- getCPUTime
(_, _, _, ph) <- createProcess (shell shellCmd) 
end <- (waitForProcess ph >> getCPUTime)
print start
print end

ご覧のとおり、コードはコマンドを実行し、実行のshellCmd前後getCPUTimeに値を出力することになっています。ただし、正しく機能しません。時差は常にゼロまたは15625000000(0.015秒)です。私が理解しているように、理由は怠惰ですが、それを修正する方法を得ることができません。私はインターネット上でいくつかの例を見つけました(そのうちの1つは上にあります)、そしてそれらのどれも私のために働きませんでした。

これを行う正しい方法は何ですか、そしてその理由は何ですか?

4

1 に答える 1

5

私が最初に思ったのは、あなたのシェル コマンドは非常に高速で、おそらく無効でさえあるということでした。次に、次のドキュメントを読みましたgetCPUTime

Computation getCPUTime returns the number of picoseconds
CPU time used by the current program

したがって、分岐したプロセスは CPU 時間にはカウントされません。おそらく、getCurrentTimefrom経由で壁時計の時間が必要Data.Timeですか?

于 2012-09-05T16:05:48.417 に答える