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
という感じでした。あまり工夫のないプログラムコードなので、工夫するとそれぞれスピードを速くできる可能性があります。何かアイデアあれば、コメントくださいね
コメント