Флаги оптимизации компилятора Visual C++: разница между /O2 и /Ot

В чем разница между /Ot флаг ("favor fast code") и /O2 флаг ("максимальная скорость")?

(Дитто с /Os и /O1.)

3 ответов


/O1 и /O2 связывают вместе несколько вариантов, направленных на большую цель. Таким образом, /O1 делает несколько вариантов генерации кода, которые благоприятствуют размеру; /O2 делает то же самое и благоприятствует скорости.

/O1 включает в себя /Os, а также другие параметры. /O2 включает в себя /Ot, а также другие параметры. Некоторые оптимизации разрешены как /O1, так и /O2. И, в зависимости от поведения подкачки вашей программы, /O1 (размер) может привести к более быстрой скорости, чем /O2, если код подкачки будет доминировать над вашим perf стоимость выполнения инструкции.

хороший краткий обзор влияния /O1 и / O2 в VC++ 2010 здесь

http://msdn.microsoft.com/en-us/library/8f8h5cxt.aspx

и включает ссылки для других версий VC.

Мартын


посмотреть / O1, / O2 (Уменьшите Размер, Увеличьте Скорость) статья в MSDN.

в нем говорится, что /O2 эквивалентно:

/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy

так /O2 включает все, что /Ot делает, и еще несколько. То же самое для /O1 и /Os, но и на этот раз.


никакой разницы. /Ot является частью /O2 оптимизации.

http://msdn.microsoft.com/en-us/library/f9534wye.aspx