2012-07-03 18 views
12

私は質問がある、なぜpythonの数値計算は非常に高速ですか? 例えば以下のコードは、1秒なぜpython math.factorial(x)が非常に高速ですか?

import math 
print math.factorial(10000) 

理由よりも短い実行されます?

+0

この機能の速度は、Pythonのバージョンに大きく依存します。 Python 3ではもっと速く、Python 2.xを使用しているようです。 –

+2

なぜそれは速くないでしょうか? – Gabe

+1

[なぜPython 2.xでは3.xよりもずっと遅いのですか?](http://stackoverflow.com/questions/9815252/why-is-math-factorial-much-slower-in-python- 2-x-than-3-x)Python 2.xおよび3.xのさまざまな階乗アルゴリズムについての説明は、重複して閉じる –

答えて

17

math module's functionsはCで実装されている:

これはC標準で定義された数学的関数へのアクセスを提供します。

Cで効率的なアルゴリズムを使用すると、高速な結果が得られます。

この特定の操作がなぜ高速であるのかを尋ねる場合は、Why is math.factorial much slower in Python 2.x than 3.x?C code itselfを参照してください。

+1

階乗の速度はアルゴリズムの複雑さによって決まります。 Cでの直接的な実装は、Python 3.xで使用されているアルゴリズムよりもはるかに遅くなります。 –

+0

@SvenMarnach:OPがPython 2と3の速度を比較していたのはどうでしたか? :-P –

+1

アルゴリズムの結果は30000桁以上の数値です。この巨大な数値計算では配列や文字列を使うべきですが、混乱しています。なぜ1秒未満の結果を返すのですか? – Pooya

関連する問題