ТЕХНИКА ОПТИМИЗАЦИИ ПРОГРАММ

       

Удаление заведомо ложных условий


Иногда программисты допускают ошибки, создавая заведомо ложные условия, как, например, это:

if (a!=0 && a==0) …

Ясно, что если 'a' не равно нулю, то равно нулю оно быть никак не может, - вот компилятор Microsoft Visual C++ и не генерирует для него код, опуская всю ветку "IF – THEN", правда, почему-то не выдавая никаких предупреждений. А зря! Ведь ясно, что это – программистская ошибка. Компиляторы же Borland C++ и WATCOM вообще не оптимизируют такой код, понимая его буквально – как есть.

Впрочем, и Microsoft Visual C++ не всегда распознает заведомую ложность условий. В частности, со следующим примером он уже не справляется:

if (a<0 && a>0x666) …



Содержание раздела