Constant Propagation - очень простая (в принципе) оптимизация, оставляемая компиляторам.
size_t radius = 5;
size_t diameter = 2*radius;
float perimeter = diameter * 3.1416f;
Это будет уменьшено компилятором путем распространения констант:
- примечаниечто значение
radius
известно - выполнить вычисление
2*radius
(это постоянное свертывание) - поэтому значение
diameter
известно - выполнитьвычисление
diameter * 3.1416f
- поэтому значение
perimeter
известно
Программа, таким образом, эквивалентна:
size_t radius = 5;
size_t diameter = 10;
float perimeter = 31.416f;
Обратите внимание, что естьмногие другие формы оптимизации, например, если radius
и diameter
больше не нужны, мы можем удалить их и оставить только perimeter
.