Python VS VBA 100万回計算と10回ファイル読み込みテスト

Python エッセイ

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

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

コメント