Python VS VBA で戦わせる(時間計測)
簡単な計算を100万回させて、その時間を計測して、どちらが早いか戦わせてみました。
PCのスペック
CPU i7-4650U RAM:8.00GB SSD:250GB
もう13年前に購入した古いパソコンです(SONY VAIO)
テスト条件は、
①簡単な計算
100万回のループで、変数xに(x+i)/iを入力(※iはループ変数)
②ファイル読み込み
100kbのファイルを10回読み込む。読みこみは一気に変数に取り込む方法を採用
テストコード
①VBA 簡単な計算100万回
Sub test4()
'簡単な計算を100万回
time1 = Timer()
For i = 1 To 10000000
x = (x + i) / i
Next i
time2 = Timer()
Debug.Print ((time2 - time1) * 1000) '445msec
End Sub
②VBA 100kbファイルを10回読み込み
Sub test5()
Dim fso As Object
Dim s As String
Dim ts As Object
Filename = "C:\test100kbテキストファイル.txt"
time1 = Timer()
For i = 1 To 10
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(Filename, Format:=TristateFalse) ' ファイルを Shift_JIS で開く
s = ts.ReadAll
ts.Close
Next i
time2 = Timer()
Debug.Print ((time2 - time1) * 1000) '82 msec
End Sub
③python 簡単な計算100万回
def test32():#J927 簡単な計算100万回
import time
print('start')
start = time.time()
x=0.0
for i in range(1,1000001):
x=(i+x)/i
print('Program finished!',)
elapsed_time = time.time()-start
print(f'time:{elapsed_time}[sec]')
#start
#Program finished!
#time:0.15590953826904297[sec]
#Hit enter key!
④python 100kbファイルを10回読み込み
def test31():#J927 100kbファイルの読み込み10回の計測
import time
print('start')
start = time.time()
for i in range(10):
with open('test100kbテキストファイル.txt','r') as f:
text_data=f.readlines()
print('Program finished!',)
elapsed_time = time.time()-start
print(f'time:{elapsed_time}[sec]')
#start
#Program finished!
#time:0.033978939056396484[sec]
#Hit enter key!
プログラミ実行時間 計測結果
もうすでに、ソースコードのコメントに書いていますが、
1回戦: 簡単な計算100万回の対戦では
VBA : 445msec
Python: 156msec
2回戦: 100kbのファイル読みこみ10回の対戦では
VBA : 82msec
Pyton : 34msec
という感じでした。あまり工夫のないプログラムコードなので、工夫するとそれぞれスピードを速くできる可能性があります。何かアイデアあれば、コメントくださいね
コメント