私のコードを最適化しながら、私は次のことを実現:Python:なぜ、*と**が/とsqrt()より速いのですか?
>>> from timeit import Timer as T
>>> T(lambda : 1234567890/4.0).repeat()
[0.22256922721862793, 0.20560789108276367, 0.20530295372009277]
>>> from __future__ import division
>>> T(lambda : 1234567890/4).repeat()
[0.14969301223754883, 0.14155197143554688, 0.14141488075256348]
>>> T(lambda : 1234567890 * 0.25).repeat()
[0.13619112968444824, 0.1281130313873291, 0.12830305099487305]
とも:
>>> from math import sqrt
>>> T(lambda : sqrt(1234567890)).repeat()
[0.2597470283508301, 0.2498021125793457, 0.24994492530822754]
>>> T(lambda : 1234567890 ** 0.5).repeat()
[0.15409398078918457, 0.14059877395629883, 0.14049601554870605]
私はそれのpythonはCで実装されている方法に関係していると仮定しますが、誰もが気になる場合、私は疑問に思いますなぜそうであるか説明する?
あなたの質問(私はあなたの本当の質問に答えていると思われます)で受け入れた答えはあなたの質問のタイトルとはあまり関係ありません。あなたはそれを編集して、一定の折り畳みと関係があるでしょうか? –
@ザンリンクス - こんにちは。明確にしてもよろしいですか?質問タイトルは、私が知りたいと思っていたことを正確に表現しています(なぜXはYよりも速いのですか)。そして、私が選んだ答えは、まさにそうです...私には完全にマッチしています...しかし、 – mac
乗算関数と電力関数は、その性質上、除算関数とsqrt()関数よりも常に高速です。除算とルート演算は、一般的に一連の細かく細かい近似を使用する必要があり、乗算のように正しい答えに直接行くことはできません。 –