страничка tripsin'а


Главная | Статьи | Заметки | Файлы| Ссылки | я

Микрозаметка про оптимизацию

Довольно часто в программе приходится определять вхождение переменной в определенный интервал. Например определять, не вышел ли индекс за границы массива. То есть тут происходит проверка двух условий. Её можно сделать двумя способами:

1) if (x > min) and (x < max) then Условие выполнено;
2) if x > min then
if x < max then Условие выполнено;

Я заинтересовался, какой из этих вариантов будет расходовать меньше машинных команд, и сделал небольшой тест для Delphi 7:


Можешь и сам попробовать. Ставь точку останова на начало кода и запускай тест. Когда breakpoint сработает, жми Alt-Ctrl-C и увидишь окно дизассемблера:



Оказывается для обоих вариантов теста генерируется абсолютно одинаковый машинный код. То есть, ты можешь спокойно использовать любой из этих вариантов. :-) Не получилось никакой оптимизации =) Таким же образом можно определить оптимальный вариант кода и в других случаях.
Удачи. tripsin

Hosted by uCoz