kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

Pythonでベンチマークを取る際のサンプル

自分用メモ
雛形として後で使う

BmObjectのcount_with_fooとcount_with_barの比較がしたい場合は、
下記のようにします。
width=20の指定は、コンソールに結果を表示するときの横幅

# -*- coding: utf-8 -*-

from benchmarker import Benchmarker

class Benchmark(object):
    class BmObject(object):
        def count_with_foo(self):
            """
            fooを使ったcount処理
            """
            pass

        def count_with_bar(self):
            """
            barを使ったcount処理
            """
            pass

    def __init__(self):
        self.bench_mark_loop = 1000 * 1

    def _setup(self):
        """
        データを突っ込む処理など
        """
        pass

    def _bench_mark(self):
        with Benchmarker(width=20, loop=self.bench_mark_loop) as bm:
            for _ in bm.empty():
                pass

            for _ in bm('foo'):
                self.BmObject().count_with_foo()

            for _ in bm('bar'):
                self.BmObject().count_with_bar()

    def main(self):
        self._setup()
        self._bench_mark()

if __name__ == '__main__':
    Benchmark().main()

参考
紹介マニアどらふと版: Python で実行速度ベンチマークを取る場合は Benchmarker を利用すると便利
Benchmarker 3.0.1 : Python Package Index