Скорость расчета мощности (в питоне)

Мне любопытно, почему умножать намного быстрее, чем брать полномочия в python (хотя из того, что я читал, это вполне может быть верно и для многих других языков). Например, это сделать намного быстрее

<code>x*x
</code>

чем

<code>x**2
</code>

Я предполагаю, что оператор ** является более общим и может также иметь дело с дробными степенями. Но если по этой причине он намного медленнее, то почему он не выполняет проверку для показателя степени int, а затем просто выполняет умножение?

Edit: Вот пример кода, который я пробовал ...

<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>

Теперь pow2 - всего лишь быстрый пример, и он явно не оптимизирован!
Но даже в этом случае я нахожу, что при использовании n = 2 и r = 1 000 000, pow1 занимает ~ 2500 мс, а pow2 - ~ 1700 мс.
 Я признаю, что для больших значений n тогда pow1 становится намного быстрее, чем pow2. Но это не слишком удивительно.

Ответы на вопрос(6)

Ваш ответ на вопрос