Рассмотрим два разных вида кода, код библиотеки и код приложения.
Библиотечный код (например, библиотека строковых классов), вероятно, будет часто иметь счетчик программы, например:
while(some test){
massage some data, while seldom calling sub-functions
}
Этот вид кода выиграет от оптимизации компилятора.
(Поэтому, чтобы ответить на ваш вопрос, люди пишут такие тестовые функции, а разработчики компиляторов используют их в качестве тестовых случаев.)
С другой стороны, код приложения выглядит следующим образом:
if (some test){
do a bunch of things, including many function calls
} else if (some other test){
do a bunch of things, including many function calls
} else {
do a bunch of things, including many function calls
}
В этом случае время, которое вы экономите с помощью прогнозирования ветвлений или циклического бритья, может составлять, например, 1 единицу времени, тогда как do a bunch of things...
может тратить от 10 ^ 2 до 10 ^ 8 единиц времени с вводом или выводом ,
Так что выгода от оптимизации компилятора этого кода, как правило, полностью теряется в шуме.
Это не значит, что его нельзя оптимизировать.
Просто компилятор не может этого сделать - это ваша работа.
Если вы хотите, чтобы последний вид кода выполнялся быстро, лучшим способом будет выяснить, какие строки кода находятся в стеке вызовов, и, если возможно, найти способ избежать их выполнения.
( Вот пример ускорения в 43 раза. )