無料体験受付中

2019年4月から小学生向け5期生、中高生向け10期生がスタートします。

無料体験のお申し込みはこちら

2の2乗は2**2か、それとも2*2とすべきか?

昔々、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)