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

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

(То же самое с /Os и /O1.)


person user541686    schedule 15.05.2011    source источник
comment
Далее вы захотите узнать ответ на этот вопрос: В чем разница между параметрами компилятора /Ox и /O2? ;-)   -  person Cody Gray    schedule 15.05.2011


Ответы (3)


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

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

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

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

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

Мартин

person Martyn Lovell    schedule 15.05.2011
comment
Спасибо за ответ, но вопрос: Так что будет, если я поставлю /O1 с /Ot? Он предпочитает размер или скорость? - person user541686; 15.05.2011
comment
Если вы поместите /O1, а затем /Ot в этом порядке (и без последующих опций или прагм), вы получите все остальные опции в O1, а /Os из /O1 будет удален, а /Ot заменит его. То, что вы тогда получаете, представляет собой гибрид оптимизации размера и скорости. - person Martyn Lovell; 15.05.2011

См. статью /O1, /O2 (минимальный размер, максимальная скорость). в MSDN.

В нем указано, что /O2 эквивалентно:

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

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

person Mat    schedule 15.05.2011

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

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

person Bo Persson    schedule 15.05.2011