Компилятор Microsoft С++ (cl.exe
, включенный в Visual Studio) предлагает несколько оптимизационных переключателей. Разница между большинством из них кажется понятной, но мне непонятно, какая разница между /O2
(которая оптимизирует код для максимальной скорости) и /Ox
(который выбирает "полную оптимизацию" ).
Я пробовал читать документацию для параметра /Ox
, и, похоже, он подтверждает, что этот переключатель также позволяет оптимизировать максимум скорость, а не размер:
Параметр
/Ox
компилятора создает код, который поддерживает скорость выполнения над меньшим размером.
Но, в частности, на мой взгляд: следующее выражение в разделе "Замечания":
В общем случае укажите
/O2
(Максимизировать скорость) вместо/Ox
.
Итак, мой вопрос: , почему вообще следует одобрять /O2
над /Ox
?. Включает ли последний параметр определенную оптимизацию, которая может вызвать непредвиденные ошибки или иное непредвиденное поведение? Это просто, что сумма оптимизации, которую нужно получить, не стоит дополнительного времени компиляции? Или это просто бессмысленная "рекомендация" в результате того, что /O2
является опцией по умолчанию в VS?