13

多くの科学計算言語は、絶対時間 (ウォール クロック) と CPU 時間 (プロセッサ サイクル) を区別しています。たとえば、Matlab には次のようなものがあります。

>> tic; pause(1); toc
Elapsed time is 1.009068 seconds.

>> start = cputime; pause(1); elapsed = cputime - start
elapsed =
        0

Mathematica では次のようになります。

>>In[1]:= AbsoluteTiming[Pause[1]]
>>Out[1]= {1.0010572, Null}

>>In[2]:= Timing[Pause[1]]
>>Out[2]= {0., Null}

この区別は、計算サーバーで実行されるコードのベンチマークを行う場合に役立ちます。この場合、他のプロセスが同時に実行されているかどうかによって、絶対的なタイミングの結果に大きなばらつきが生じる可能性があります。

Julia 標準ライブラリは、絶対時間を測定する関数である に基づいて、 tic()toc()、およびその他のいくつかの関数/マクロを介して式のタイミングのサポートを提供します。@timetime_ns()

>>julia> @time sleep(1)
elapsed time: 1.017056895 seconds (135788 bytes allocated)

私の質問: Julia での式評価の経過 CPU 時間を取得する簡単な方法はありますか?

(補足: 掘り下げてみると、Julia のタイミングはlibuvuv_hrtime()の関数に基づいているようです。同じライブラリから使用すると、Julia の経過した CPU 時間にアクセスする方法が得られるように思えますが、私は専門家ではありません。誰かがこのようなものを使ってみましたか?)uv_getrusage

4

2 に答える 2

12

既存のソリューションが見つからなかったため、いくつかの単純な CPU タイミング機能を備えたパッケージをまとめました: https://github.com/schmrlng/CPUTime.jl。パッケージは並列コードで完全にテストされておらず、他のバグがある可能性がありますが、他の誰かがそれを試してみたい場合は、

>> Pkg.clone("https://github.com/schmrlng/CPUTime.jl.git")

プロンプトからjulia>パッケージをインストールする必要があります。

于 2014-06-27T00:44:48.857 に答える
8

Julia にはコマンドがtic()あり、Matlabとtoc()同じように機能します。tictoc

julia> tic(); 7^1000000000; toc()
elapsed time: 0.046563597 seconds
0.046563597
于 2015-04-17T22:02:00.717 に答える