Project Euler Problem 2を解決する非常に単純なVBプログラムを実行していて、パフォーマンスの時間を計りたいと思っています。私のアプローチは次のとおりです。
StartTime = Timer()
Set streamer = CreateObject("Scripting.FileSystemObject")
Set writingWriter = streamer.GetStandardStream(1)
Dim n, nIterations, Temp1, Temp2, Collector
n = 4000000
nIterations = 0
Temp1 = 0
Collector = 0
Temp2 = 1
Do
Fib = Temp1 + Temp2
Temp2 = Temp1
Temp1 = Fib
Select Case Fib Mod 2
Case 0
Collector = Collector + Fib
End Select
Loop Until Fib > n
EndTime = Timer()
writingWriter.WriteLine("Solution is: " & Collector)
writingWriter.WriteLine("Code took " & EndTime - StartTime & " to execute")
コードを初めて実行したときに、次の出力が得られました(入力も含まれています)。
C:\Dev\cscript program.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
Solution is: 4613732
Code took 0.015625 to execute
その後の実行(何も変更しない)ごとに、次のようになります。
C:\Dev\cscript program.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
Solution is: 4613732
Code took 0 to execute
誰かがここで何が起こっているのか説明できますか?WindowsコンソールはFibの値を保存しており、コードの実行時にそれを呼び出しているようです。同様の何かを実行している友人(彼はVBAを使用していますが)は同じ結果を得ました-彼のその後の実行のそれぞれは実行時間の減少を経験しました。
注:これは非常に単純なアプローチであることを私は知っています。私はVBの感触をつかもうとしているだけです。今のところ大ファンではありません。