Visual C++ Compiler Optimization Flags: Difference Between /O2 and /Ot
What's the difference between 开发者_开发技巧the /Ot
flag ("favor fast code") and the /O2
flag ("maximize speed")?
(Ditto with /Os
and /O1
.)
/O1 and /O2 bundle together a number of options aimed at a larger goal. So /O1 makes a number of code generation choices that favour size; /O2 does the same thing and favours speed.
/O1 includes /Os as well as other options. /O2 includes /Ot as well as other options. Some optimisations are enabled by both /O1 and /O2. And, depending on your program's paging behaviour, /O1 (size) can result in faster speed than /O2 if paging code comes to dominate your perf over instruction execution cost.
A good short summary of the impact of /O1 and /O2 in VC++ 2010 is here
http://msdn.microsoft.com/en-us/library/8f8h5cxt.aspx
and includes links for other versions of VC.
Martyn
See the /O1, /O2 (Minimize Size, Maximize Speed) article at MSDN.
It states that /O2
is equivalent to:
/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy
So /O2
enables all the things that /Ot
does, and some more. Same thing for /O1
vs. /Os
, but for size this time.
No difference. /Ot
is a part of the /O2
optimizations.
http://msdn.microsoft.com/en-us/library/f9534wye.aspx
精彩评论