и призывает всех использовать / O2 вместо / Ox.

лятор Microsoft C ++ (cl.exeв комплекте с Visual Studio) предлагаетнесколько оптимизационных переключателей, Разница между большинством из них кажется самоочевидной, но мне не ясно, в чем разница между/O2 (который оптимизирует код для максимальной скорости) и/Ox (который выбирает «полная оптимизация»).

Я пытался читатьдокументация для/Ox вариант, и, кажется, подтверждает, что этот переключатель также позволяет оптимизировать максимальную скорость, а не размер:

/Ox Опция компилятора создает код, который способствует скорости выполнения по сравнению с меньшим размером.

Но, в частности, на глаза попалось следующее утверждение в разделе «Замечания»:

В общем, уточняйте/O2 (Максимизировать скорость) вместо/Ox.

Итак, мой вопрос,почему следует вообще одобрить/O2 над/Ox? Включает ли последняя опция определенную оптимизацию, которая, как известно, вызывает непредвиденные ошибки или иное непредвиденное поведение? Это просто, что количество оптимизации не стоит дополнительного времени компиляции? Или это просто совершенно бессмысленная «рекомендация», вытекающая из того факта, что/O2 этопо умолчанию вариант в VS?

Ответы на вопрос(2)

Ваш ответ на вопрос