/O1、/O2(最小化大小、最大化速度)
选择一组影响文件大小和速度的预定义选项。
/O1
/O2
备注
下表介绍 /O1 和 /O2。
选项 |
等效于 |
Comment |
---|---|---|
/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=55900。
// 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。