Использование наивных показателей производительности, подобных этому, часто дает непонятные результаты.Настройки оптимизации являются одним из самых больших заблуждений, сборка выпуска (оптимизированная):
/mnt/v/CLionProjects/StackOverflow/cmake-build-release/StackOverflow
Inline:It took 0 .
No-Inline:It took 0 .
Process finished with exit code 0
Отладочная сборка (неоптимизированная):
/mnt/v/CLionProjects/StackOverflow/cmake-build-debug/StackOverflow
Inline:It took 15625 .
No-Inline:It took 15625 .
Process finished with exit code 0
Оптимизированные запуски не требуют времени, потому что компиляторпризнает, что код ничего не выполняет (кроме как тратить циклы процессора).Метрики производительности сложно спроектировать, чтобы гарантировать, что они действительно тестируют то, что вы думаете, они тестируют, особенно с включенными оптимизациями.Но чаще всего требуется производительность оптимизированного кода.Если вы на самом деле не прикладываете усилий для разработки хороших тестов производительности, лучше всего часто писать код приложения и тестировать его с использованием реальных данных или верить в то, что вам говорят эксперты.Хотя я не являюсь экспертом по компиляции и генерации объектного кода, я узнал за эти годы, что советовать компилятору встроенному коду просить его отдавать предпочтение скорости по сравнению с размером, а просить компилятор не включать встроенный код -предпочитайте размер скорости.Но ни один запрос не является обязательным для компилятора.