math.pi へのアクセス方法として以下の3パターン用意し、それぞれの処理速度を比較します。
- フルパスで math.pi
- from math import piとインポート
- いったんローカル変数 pi にコピー
ベンチマークのソースコードです。
from benchmarker import Benchmarker
import math
with Benchmarker(1000000, cycle=3, extra=1) as bench:
@bench("math.pi")
def _(bm):
for _ in bm:
2.0 * math.pi
@bench("import pi")
def _(bm):
from math import pi
for _ in bm:
2.0 * pi
@bench("local")
def _(bm):
pi = math.pi
for _ in bm:
2.0 * pi
計測結果です。
## 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 0.2657 (100.0) ******************** import pi 0.2703 ( 98.3) ******************** math.pi 0.4347 ( 61.1) ************
計測結果は、local と import pi はほぼ等速(localの方が遅い回もありました)、math.pi は低速、となりました。
いわゆる数学アルゴリズムでは math.pi へのアクセスが多くなる場合があります。math.pi とフルパスで書くのは、速度的には若干不利となるようです。
また、ドットを含むパスを書くと遅くなるというのは、math.pi に限らず全ての変数に言えることです。
0 件のコメント:
コメントを投稿