Мой код выглядит следующим образом:Оптимизирует ли собственный 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
оптимизации ли VBA компилятор Microsoft прочь вызовы к процедурам, которые ничего не делают? Как я могу узнать?
Что такое «оптимизация» одного, однобитового, двоичного, булевского теста? Вы уверены, что это значительная часть времени выполнения? Может быть, но шансы довольно отдаленные. Перед оптимизацией сделайте некоторое профилирование, чтобы не тратить время и не беспокоиться о битах кода, которые составляют 0,0001% от вашего времени выполнения. –
@ Jean-FrançoisCorbett: Ну, я хочу, чтобы какой-то отладочный вывод во время цикла повторялся много тысяч раз, но если отладка отключена, это позволит избежать дополнительных накладных расходов последующих операций перехода/стека. Как я могу профилировать VBA для определения количества дополнительных накладных расходов, связанных с такими вызовами? – eggyal