Скорость расчета мощности (в питоне)
Мне любопытно, почему умножать намного быстрее, чем брать полномочия в 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. Но это не слишком удивительно.