関数(Sub) と Gosubの処理速度の違いについて
Posted: 2009年8月10日(月) 21:43
連続の投稿をご容赦ください。
前投稿 「Select Case と関数ポインタ」で、色々と試行錯誤をしていたのです。
その際に、Gosubを試しに使用してみたら、関数(Sub~SubEnd)よりも高速なのです。
テストしたコードは以下の通りです。
上記の例ですと、50000000回(5千万)ループしています。この場合はGosubの方が高速です。
しかし、200000回(20万)程度のループですとGosubが低速でした。
演算回数を多く繰り返すような場合だと、(処理速度向上を考えると)Gosubを使うべきなのでしょうか?
#時間測定はコレで合っているのでしょうか?
前投稿 「Select Case と関数ポインタ」で、色々と試行錯誤をしていたのです。
その際に、Gosubを試しに使用してみたら、関数(Sub~SubEnd)よりも高速なのです。
テストしたコードは以下の通りです。
コード: 全て選択
#N88BASIC
Dim P%(8,8) As Integer
Dim Calc As Integer
Dim Count As DWord
Dim CountEnd As DWord
Dim dwStart As int64
Dim dwEnd As int64
CountEnd=50000000
'関数
dwStart = GetTickCount()
For Count=1 TO CountEnd
Ptn01()
Next
Timer()
'Gosub
dwStart = GetTickCount()
For Count=1 TO CountEnd
Gosub *Ptn
Next
Timer()
Input Count
End
Sub Timer()
dwEnd = GetTickCount()
Print (dwEnd-dwStart)/1000
END Sub
*Ptn
Calc=((((((P%(1,1)*3+P%(2,1))*3+P%(3,1))*3+P%(4,1))*3+P%(5,1))*3+P%(6,1))*3+P%(7,1))
Return
Sub Ptn01()
Calc=((((((P%(1,1)*3+P%(2,1))*3+P%(3,1))*3+P%(4,1))*3+P%(5,1))*3+P%(6,1))*3+P%(7,1))
End Sub
しかし、200000回(20万)程度のループですとGosubが低速でした。
演算回数を多く繰り返すような場合だと、(処理速度向上を考えると)Gosubを使うべきなのでしょうか?
#時間測定はコレで合っているのでしょうか?