2024.6.19 プログラムの高速化に関する知見(ループ処理)
ループは負荷の高い処理である。一部のプログラム言語においてはユニバーサル関数を活用することにより、高速化を図ることができる。
code:jikan1.py
import math, random, time
import numpy as np
datanum = 100000
data1 = []
for _ in range(datanum):
data1.append(random.random())
y1 = []
time1_init = time.process_time()
#
for i in data1:
y1.append(math.sin(i)) # ループ毎に関数sinを呼び出している
time1_final = time.process_time() - time1_init
#
data2 = np.array(data1)
time2_init = time.process_time()
y2 = np.sin(data2) # 関数sinは一回だけ呼び出される
time2_final = time.process_time() - time2_init
print('データ数', datanum)
print('math.sin: ', time1_final)
print('numpy.sin:', time2_final)
結果
code:result1.txt
データ数 100000
math.sin: 0.006152399999999947
numpy.sin: 0.0006050000000001887
結果から、numpyによる一括処理の方がおよそ10倍高速であることがわかる。