Мне любопытно, почему это намного быстрее, чтобы размножаться, чем принимать полномочия в python (хотя из того, что я прочитал, это может быть правдой и на многих других языках). Например, гораздо быстрее сделать
x*x
чем
x**2
Я полагаю, что оператор ** более общий и может также иметь дело с дробными степенями. Но если это почему-то намного медленнее, почему он не выполняет проверку для индекса int, а затем просто выполняет умножение?
Изменить: Вот пример кода, который я пробовал...
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
Теперь pow2 - просто быстрый пример и явно не оптимизирован!
Но даже в этом случае я считаю, что используя n = 2 и r = 1,000,000, тогда pow1 принимает ~ 2500 мс, а pow2 принимает ~ 1700 мс.
Я допускаю, что при больших значениях n, pow1 получается намного быстрее, чем pow2. Но это не слишком удивительно.