Это сложно.
Правда в том, что конвейер оптимизации компилятора в значительной степени основан на эвристиках .
Ряд оптимизация - это надежные вещи (такие как снижение прочности ), однако многие тяжелые атлеты (такие как inlining ) основаны на наборе эвристик.
Эвристика Конечно, не вытащил из воздуха. Они были тщательно настроены разработчиками компилятора на основе примера программ, которые были оценены как репрезентативные, и отшлифованы на основе отчетов клиентов.
Тем не менее, в конце дня они остаются эвристика и в результате некоторые программы работают быстрее с -Oz
, чем с -O3
, потому что используется другой набор эвристик.