2024.6.21 定数と変数のアクセス速度検証
コード上に定数値が書かれていると、メモリ上にそのデータのインスタンスが生成される。
コード上に変数名が書かれていると、その変数が割り当てられたメモリ上のアドレスを求め、そこにアクセスし、値を取ってくる。
これらの違いを、処理に要する時間の差から体感してみよう。
code:access1.py
import time
loopmax = 100000000
a, b, c, d = 1.0, 2.0, 3.0, 4.0
#
time0_init = time.process_time()
for i in range(loopmax):
x = 1.0 + 2.0 + 3.0 + 4.0
time0 = time.process_time() - time0_init
print('変数の数0)', time0)
#
time1_init = time.process_time()
for i in range(loopmax):
x = a + 2.0 + 3.0 + 4.0
time1 = time.process_time() - time1_init
print('変数の数1)', time1)
#
time2_init = time.process_time()
for i in range(loopmax):
x = a + b + 3.0 + 4.0
time2 = time.process_time() - time2_init
print('変数の数2)', time2)
#
time3_init = time.process_time()
for i in range(loopmax):
x = a + b + c + 4.0
time3 = time.process_time() - time3_init
print('変数の数3)', time3)
#
time4_init = time.process_time()
for i in range(loopmax):
x = a + b + c + d
time4 = time.process_time() - time4_init
print('変数の数4)', time4)
code:result1.txt
変数の数0) 1.7184862
変数の数1) 3.9103926
変数の数2) 4.1158558
変数の数3) 4.262207200000001
変数の数4) 4.585869299999999
計算の内容はそれぞれ同じ「(((1.0 + 2.0) + 3.0) + 4.0)を変数に代入」であるが、処理に要する時間にはこれだけの差が生じる。