Это больше похоже на подсказки, а не просто на решение:
1) разверните ТРЕЙЛЫ на порядки величин, чтобы реально что-то измерить в диапазоне секунд
2) повторите измерение несколькораз (n = 100 или более) и возьмите среднее значение (и ошибку среднего = среднеквадратическое значение / квадрат (n), если вам нужна статистика)
3) на самом деле измерьте то, что вы хотите измерить: по крайней мере, поместите толькокод, который вас интересует, в цикл TRAILS, например:
t1 = Clock::now();
for( int i=0; i<TRIALS; i++ )
{
... only code relevant for your calculation here ...
}
t2 = Clock::now();
sum = chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count();
4) и, наконец, рассмотрим службу проводника компилятора godbolt https://godbolt.org/, где вы можете проверить выходные данные ассемблера вашего кода на различныеНастройки оптимизатора.Для кода, столь же простого, как ваш (я пытался), он просто делает (используя -O3): mov eax,170
так что вы видите: компилятор умен, вы не можете легко победить его встроенным ассемблером!И это наверняка так для нетривиальных примеров.