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

       

Удаление лишних присвоений


Операция присвоения одной переменной другой переменной (т.е. что-то вроде a=b) бессмысленна – от нее всегда можно избавиться, заменив копию переменной ее оригиналом. Например, пусть не оптимизированный код выглядел так:

int a=b;

printf("%x %x \n",a, b);

a=a+1;

printf("%x %x \n",a, b);

Очевидно: переменная 'a' не является копией 'b' и не может быть удалена, но вот присвоение a=b удалить можно, смотрите:

int a=b;

printf("%x %x \n",b, b);

a=b+1;

printf("%x %x \n",a, b);

Компиляторы Microsoft Visual C++ и WATCOM всегда избавляются от лишних присвоений, а Borland C++ делать этого не умеет.



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