Рейтинг:
7
5everin
Я провел небольшое тестирование с помощью секундомера и 1 000 000 000 итераций условия, повторенных 10 раз для каждой версии.
И чтобы ответить на мой собственный вопрос:
"Хорошее "решение немного быстрее, чем" уродливое", когда условие всегда терпит неудачу. Разница составляет всего лишь около 1% или меньше, но она кажется довольно последовательной в течение нескольких запусков.
Я думаю, что все остальное гораздо дороже обрабатывать.
"Уродливая" форма кажется немного быстрее, когда условие всегда выполняется с небольшим большим запасом, возможно, 1-2%.
Однако как только оптимизация компилятора включена в VS. Разница, вдруг исчезает. Так что на самом деле нет никаких причин использовать его кроме фактора раздражения :)
Dave Kreskowiak
Да, вам уже говорили, что различия исчезнут, как только вы перейдете к сборке с включенной оптимизацией, то есть к сборке "Release".
Тестирование" отладочной " сборки немного бессмысленно.
Рейтинг:
30
OriginalGriff
Первый из них уродлив и труден для чтения: после завершения оптимизации не должно быть никакой разницы в производительности.
5everin
Спасибо, лучшая практика-это не совсем то, что мне нужно, хотя я понимаю, почему вы добавили ее в ответ.
Рейтинг:
2
Dave Kreskowiak
Лучший вопрос. Почему вы тестируете, чтобы увидеть, является ли значение "больше", а затем в следующем операторе тестируете, чтобы увидеть, является ли значение "меньше"?
Если значение не равно, вам нужен только один другой оператор if, чтобы получить два результата.
If colmod1 <> new_colmod1 Then
If colmod1 > new_colmod1 Then
colmod1 -= 0.001
Else
colmod1 += 0.001
End If
End If
5everin
меньше типизации для примера :)
Dave Kreskowiak
Кроме того, менее читаемый и менее производительный оператор if не является быстрой операцией.
Richard Deeming
Код внутри If
блок изменяет одну из тестируемых переменных, поэтому теоретически возможно, что код выполнит оба блока. :)
Напр.:
colmod1
= 42
new_colmod1
= 41.9991
Dave Kreskowiak
Правда. Я видел это, но мне даже в голову не пришло.
Вышележащий равный / не равный, больший, меньший паттерн-вот что застряло у меня в голове.