壁時計と CPU 時間を分離して、Python で関数のパフォーマンスを測定する方法を探しています。
私はpythonプロファイラーを調べましたが、それらはプログラムをスキャンするように設計されており、機能だけではないようです。http://docs.python.org/2/library/profile.htmlから:
注意: プロファイラー モジュールは、ベンチマーク目的ではなく、特定のプログラムの実行プロファイルを提供するように設計されています (そのため、かなり正確な結果を得るために timeit があります)。これは特に、C コードに対する Python コードのベンチマークに当てはまります。プロファイラーは Python コードのオーバーヘッドを導入しますが、C レベル関数のオーバーヘッドは導入しないため、C コードはどの Python コードよりも高速に見えます。
次に timeit モジュールを試してみました: http://docs.python.org/2/library/timeit.htmlですが、CPU と壁時計の時間の分離をサポートしていないようです。私が理解しているように、それは総実行時間を測定するだけです。
私が探しているのは次のようなものです:
$ time python yourprogram.py
real 0m1.028s
user 0m0.001s
sys 0m0.003s
ただし、コマンド ラインから呼び出す代わりに、Python コードから呼び出す必要があります。
R の system.time() のようなもの:
print(system.time(replicate(repeats, factorialRecursive(150))))
user system elapsed
0.041 0.001 0.041
Pythonでこれを達成するにはどうすればよいですか?