今夜、アレックス・マーテリがこれを実演しているのを見ました。ここで速度に大きな違いがある理由についての彼の説明を聞き取れませんでしたが、それでも非常に興味があります。
% python -mtimeit -s'def f(): pass' 'f()'
10000000 loops, best of 3: 0.121 usec per loop
% python -mtimeit -s'def f(): pass' 'f'
10000000 loops, best of 3: 0.0265 usec per loop
では、なぜ はf
よりもはるかに高速に実行されるのf()
でしょうか? 確かに、この例は少し不自然です。引数を取らないすべての可能な関数に一般化されるかどうかわからないからです。ここのボンネットの下で何が起こっているのですか?