2012年9月28日

Python で実行速度ベンチマークを取る場合は Benchmarker を利用すると便利

概要

Python で実行速度比較を必要とする場合は結構あるが、その場合は「Benchmarker」を使うと便利。
ライセンスが「Public Domain」、Python 3 に対応で機能が多いのに使い易い。

インストール

easy_install を使う。

easy_install Benchmarker

使い方

使い方は結構簡単で最低限必要なのは以下だけ。

  1. Benchmarkerのインスタンスを生成
  2. withブロック内に測定対象コード記述

サンプル

Benchmarker」にサンプルが結構書いてあるが、すこし変えた物を転載しておく。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from benchmarker import Benchmarker


def main():

    s1, s2, s3, s4, s5 = '文字列', '結合', '速度の', '確認を', 'してみる'
    loop = 1000 * 1000
    with Benchmarker(width=20) as bm:
        with bm('join'):
            for _ in xrange(loop):
                _ = ''.join((s1, s2, s3, s4, s5))
        with bm('concat'):
            for _ in xrange(loop):
                _ = s1 + s2 + s3 + s4 + s5
        with bm('format'):
            for _ in xrange(loop):
                _ = '%s%s%s%s%s' % (s1, s2, s3, s4, s5)
        with bm('newformat'):
            for _ in xrange(loop):
                _ = '{}{}{}{}{}'.format(s1, s2, s3, s4, s5)


if __name__ == '__main__':
    main()

まとめ

速度がどうしても必要な時、普段なにげなく利用しているライブラリ等を測定してみると、速度向上に有益な場合がある。
ただ、本当に速度が必要な場合、小手先の変更はあまり意味がない場合もあるので、ベンチマークの結果は参考程度にするのが良いだろう。

blog comments powered by Disqus