私のコードは次のとおりです。マイクロソフトのVBAのコンパイラは何もしない手続きへの呼び出しをネイティブVBAコンパイラは最適化していますか?次のように
#Const debuggingEnabled = False
Sub debugMessage(str As String)
#If debuggingEnabled Then
Debug.Print str
#End If
End Sub
Sub doThings()
debugMessage "test" 'Does this get optimised away, or must it be explicitly
'wrapped with `#If .. #End If` every time it's called
'if one is to avoid the jump and stack push/pop ops?
End Sub
離れて最適化していますか?どうすればわかりますか?
ブーリアンテストの1ビット1ビットバイナリを「最適化」する際のポイントは何ですか?これが実行時間のかなりの部分を占めていると確信していますか?可能かもしれませんが、チャンスはかなり遠いです。最適化する前に、いくつかのプロファイリングを行います。したがって、実行時間の0.0001%に相当するコードを心配する必要はありません。 –
@ Jean-FrançoisCorbett:何千回も繰り返されるループ中にいくつかのデバッグ出力を出したいのですが、デバッグが無効な場合は、その後のジャンプ/スタック操作のオーバーヘッドが避けられます。そのような呼び出しに伴う追加のオーバーヘッドの量を判断するためにVBAをプロファイルするにはどうすればよいですか? – eggyal