2015年12月19日

ベンチマーク8 localとbuilt-in

こちらでローカル変数とグローバル変数の呼び出し速度について比較しました。
ここでは、ローカル関数とビルトイン関数の呼び出し速度を比較します。


ベンチマークのソースコードです。
str から int へのキャストについて、ビルトインの int() と一旦ローカル変数に代入した int() の速度を計測します。

from benchmarker import Benchmarker

with Benchmarker(1000000, cycle=3, extra=1) as bench:
    s = '1'

    @bench("builtin")
    def _(bm):
        for _ in bm:
            int(s)

    @bench("local")
    def _(bm):
        local_int = int
        for _ in bm:
            local_int(s)

計測結果です。
## benchmarker:         release 4.0.1 (for python)
## python version:      3.4.0
## python compiler:     MSC v.1600 32 bit (Intel)
## python platform:     Windows-8-6.2.9200
...

## Ranking    real
local       1.3894  (100.0) ********************
builtin     1.4500  ( 95.8) *******************
一旦ローカル変数にした方が、若干ですが高速になりました。
何万回というオーダーで int() を呼び出すのが分かっているのであれば、ローカル変数化した方が良いようです。

0 件のコメント:

コメントを投稿