2024.6.19 プログラムの高速化に関する知見(演算)
基本となるコード、整数の加算を1億回行っている。
code:jikoku1.py
import time
loopmax = 1000000000
count = 0
time_p1 = time.process_time()
#
for i in range(loopmax):
count += 1
#
time_p2 = time.process_time() - time_p1
print(count)
print('CPU時間', time_p2)
結果
code:result1.txt
1000000000
CPU時間 28.5644801
浮動小数点数の掛算を追加する。
code:jikoku2.py
import time
loopmax = 1000000000
count = 0
sum = 0. # (A)
time_p1 = time.process_time()
#
for i in range(loopmax):
count += 1
sum *=1.0001 # (A')
#
time_p2 = time.process_time() - time_p1
print(count)
print('CPU時間', time_p2)
結果
code:result2.txt
1000000000
CPU時間 44.7181469
除算を追加する。
code:jikan3.py
import time
loopmax = 1000000000
count = 0
sum = 0.
time_p1 = time.process_time()
#
for i in range(loopmax):
count += 1
sum *= 1.0001
sum /= 1.001 # (B)
#
time_p2 = time.process_time() - time_p1
print(count, sum)
print('CPU時間', time_p2)
結果
code:result3.txt
1000000000 0.0
CPU時間 58.5184636
table:比較
加算 28.56
加算+乗算 44.71 1.5倍
加算+乗算+乗算 58.51 2.04倍
計算回数が多い場合には、単純な演算であっても計算時間に無視できない影響が出ることを覚えておこう。