Rechengeschwindigkeit (in Python)
Ich bin gespannt, warum es so viel schneller ist, sich zu vermehren, als Python-Fähigkeiten zu erlangen (obwohl dies, wie ich gelesen habe, möglicherweise auch in vielen anderen Sprachen zutrifft). Zum Beispiel geht es viel schneller
<code>x*x </code>
als
<code>x**2 </code>
Ich nehme an, der Operator ** ist allgemeiner und kann auch mit gebrochenen Potenzen umgehen. Aber wenn das der Grund ist, warum es so viel langsamer ist, warum führt es dann keine Prüfung für einen int-Exponenten durch und multipliziert dann einfach?
Bearbeiten: Hier ist ein Beispielcode, den ich ausprobiert habe ...
<code>def pow1(r, n): for i in range(r): p = i**n def pow2(r, n): for i in range(r): p = 1 for j in range(n): p *= i </code>
Jetzt ist pow2 nur ein kurzes Beispiel und eindeutig nicht optimiert!
Aber auch wenn ich n = 2 und r = 1.000.000 benutze, dauert pow1 ~ 2500ms und pow2 ~ 1700ms.
Ich gebe zu, dass für große Werte von n pow1 viel schneller als pow2 wird. Das ist aber nicht allzu überraschend.