Pythonで簡単にベンチマークがとれるBenchmarkerが便利

Pythonでベンチマーク用のライブラリを探していたら、 Benchmarker という良さげなモジュールを見つけたので、メモと紹介をかねてポスト。

from test.pystone import Proc0
from benchmarker import Benchmarker


bm = Benchmarker()

bm('pystone Proc0(1000)').run(Proc0, 1000)
bm('pystone Proc0(10000)').run(Proc0, 10000)
bm('pystone Proc0(5000)').run(Proc0, 5000)
bm.print_compared_matrix()
$ python marker.py
                                  utime     stime     total      real
pystone Proc0(1000)               0.020     0.000     0.020     0.026
pystone Proc0(10000)              0.230     0.000     0.230     0.237
pystone Proc0(5000)               0.120     0.000     0.120     0.119
-------------------------------------------------------------------------------
                                 real      [01]     [02]     [03]
[01]  pystone Proc0(1000)      0.026s        -    812.8%   355.9%
[02] pystone Proc0(10000)      0.237s    -89.0%       -    -50.1%
[03]  pystone Proc0(5000)      0.119s    -78.1%   100.2%       -

かんたんでしょ?

Python2.5以上の場合はwithステートメントが使えます。

from test.pystone import Proc0
from benchmarker import Benchmarker


bm = Benchmarker()

with bm('pystone Proc0(1000)'):
    Proc0(1000)
with bm('pystone Proc0(10000)'):
    Proc0(10000)
with bm('pystone Proc0(5000)'):
    Proc0(5000)
bm.print_compared_matrix()

かんたんでしょ?

いじょ。