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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage