Качество компиляции (быстродействие объектного кода) разных компиляторов C/C++ может различаться. 5 Например, один и тот же компилятор (многоплатформенный) может показывать разные результаты производительности сгенерированного кода на различной аппаратуре. 3 Результат зависит от блоков кодогенерации и оптимизации для конкретной аппаратуры. 3
Да, можно «подкрутить» компилятор, чтобы улучшить качество компиляции. 24 Для этого можно:
- Писать понятный и простой в сопровождении код. 2 Это поможет компилятору оптимизировать код более эффективно. 2
- Использовать директивы компилятора. 2 Например, сообщить компилятору задействовать то соглашение по вызову функций, которое работает быстрее, чем предлагаемое по умолчанию. 2
- Применять встроенные в компилятор функции. 2 Компилятор заменяет вызов такой функции эффективной последовательностью инструкций. 2 Однако применение встроенных функций может повысить производительность кода, но ухудшить его читаемость и портируемость. 2
- Использовать оптимизацию на основе профиля. 2 С помощью этого метода компилятор больше узнает о том, как будет вести себя код в период выполнения, и сможет соответственно оптимизировать его. 2
Также можно попробовать изменить порядок линковки, так как это может оказать сильное влияние на производительность из-за кэширования и предсказания ветвлений. 4