Техника оптимизации под линуха

Удаление избыточных проверок


Небрежное кодирование часто приводит к появлению избыточных или даже заведомо ложных проверок, полностью или частично дублирующих друг друга, например: "if(a > 9) … if (a > 6)…". Очевидно, что вторая проверка лишняя и icl благополучно ее удаляет. Остальные рассматриваемые компиляторы такой способностью не обладают, послушно генерируя тупой код.

if (n > 10) a++; else return 0;

if (n > 5) a++; else return 0;    // избыточная

проверка

if (n < 2) a++; else return 0;    // заведомо ложна проверка



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