私は質問Why does Python code run faster in a function?につながるコメントを見ました。Pythonコードが関数内でより速く実行されるのは本当ですか?
私は思考になった、と私は自分自身がtimeit
ライブラリを使用してそれをしようと考え出し、しかし、私は非常に異なる結果を得た:
(ノート:10**8
はに少しより高速なものを作るために10**7
に変更されました時間)
>>> from timeit import repeat
>>> setup = """
def main():
for i in xrange(10**7):
pass
"""
>>> stmt = """
for i in xrange(10**7):
pass
"""
>>> min(repeat('main()', setup, repeat=7, number=10))
1.4399558753975725
>>> min(repeat(stmt, repeat=7, number=10))
1.4410973942722194
>>> 1.4410973942722194/1.4399558753975725
1.9
- は私が正しく
timeit
を使用しましたか? - なぜこれらの結果はお互いに0.1%未満であるのに対し、他の質問の結果はほぼ250%異なるのですか?
CPythonPythonのコンパイル済みバージョン(Cythonなど)を使用する場合にのみ違いがありますか?- 最終的には:Pythonコード実際にはが速くなっていますか、それとも時間の経過によりますか?
:機能
f_no_opt
で実行最適化されていないコンパイルstmt
対f_opt
としてここは、問題のあなたの機能を備えたテストですPython対CPythonなど)が重要です)。また、適切な比較のために、他の質問と同じコードを実行してみてください(同じタイミングでタイミングを取る)。 – Cornstalks
[この記事](http://stackoverflow.com/a/11241708/1961486)は洞察力があります。 – Octipi
コンパイルされたバージョンのPython(CPython、PyPyなど)では問題ないようですが、普通の古いバニラのPythonでは違いはありません。 –