/O1、/O2(最小化大小、最大化速度)
更新:2007 年 11 月
选择一组影响文件大小和速度的预定义选项。
/O1
/O2
备注
下表介绍 /O1 和 /O2。
选项 |
等效于 |
注释 |
---|---|---|
/O1(最小化大小) |
/Og/Os/Oy/Ob2/Gs/GF/Gy |
在多数情况下创建最小的代码。 |
/O2(最大化速度) |
/Og/Oi/Ot/Oy/Ob2/Gs/GF/Gy |
在多数情况下创建最快的代码。(发布版本的默认设置) |
/O1 和 /O2 也支持命名返回值优化,它消除了基于堆栈的返回值的复制构造函数和析构函数。请看下面的示例。 Test 函数将不创建复制构造函数或析构函数。将输出语句添加到构造函数、析构函数和复制构造函数,以查看在运行程序时命名返回值优化的效果。有关 Visual C++ 中的命名返回值优化的更多信息,请参见 https://go.microsoft.com/fwlink?linkid。
// O1_O2_NRVO.cpp
// compile with: /O1
struct A {
A() {}
~A() {}
A(const A& aa) {}
};
A Test() {
A a;
return a;
}
int main() {
A aa;
aa = Test();
}
x86 特定选项
这些选项隐含使用“框架指针省略”(/Oy) 选项。
END x86 Specific
在 Visual Studio 开发环境中设置此编译器选项
打开此项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。
单击“C/C++”文件夹。
单击“优化”属性页。
修改“优化”属性。
以编程方式设置此编译器选项
- 请参见 Optimization。