昔々、2の2乗をプログラムで計算するのに2**2よりも2*2とした方が速いということを教わった覚えがあります。
果たしてそうなのか、調べてみました。
Pythonの場合、以下のようにして経過時間を求めることができます。
100万回繰り返し計算を行っています。
import time start_time = time.time() for i in range(1000000): a = 2*2 #a = 2**2 #a = pow(2, 2) end_time = time.time() elapsed_time = end_time - start_time print(elapsed_time)
ただし、この方法では1回の計算で経過時間を求めているので結果の信頼性は低いことになります。
そこで、次のようにすることで自動的に繰り返し計算を行い、平均値と標準偏差を求めることができます。
%%timeit import time for i in range(1000000): a = 2*2 #a = 2**2 #a = pow(2, 2)
結果は以下のようになりました。
2*2の場合
26.7 ms ± 624 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
2**2の場合
26.8 ms ± 931 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
両者で大差はないという結果になりました。あまり気にすることはなさそうです。
ちなみにpow()を使って計算すると一桁以上長い時間がかかるようです。
397 ms ± 5.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)