Visual C++ 优化概述
2007-03-30 21:32:07 来源:WEB开发网核心提示:摘要:演示了 Visual C++ 2003 编译器提供的众多代码优化功能中的几项功能,Microsoft?Visual C++?Toolkit 2003 包含优化 C++ 编译器,Visual C++ 优化概述,大多数开关相当简明,并且已经在 Visual C++ 产品的多个版本中存在,可使用它来标识内联函数,Add
摘要:演示了 Visual C++ 2003 编译器提供的众多代码优化功能中的几项功能。
Microsoft?Visual C++?Toolkit 2003 包含优化 C++ 编译器。大多数开关相当简明,并且已经在 Visual C++ 产品的多个版本中存在,但仍然有两个开关比较新,并且无须重写代码就能够显著提高速度。它们是 /GL (Whole Program Optimization) 和 /G7(它能产生为 Pentium 4 或 AMD Athlon 优化的代码)。还有一个选项 /arch:SSE2,它能产生针对 SSE2 寄存器和指令而优化的代码。
示例代码经过了三项测试:
1.
调用作为内联候选函数的函数。
2.
执行大量浮点乘法和加法运算。
3.
执行大量整数乘法和加法运算。
完整程序优化示例代码定义了两个非常类似的函数:Add() 和 DisplayAdd()。DisplayAdd() 会显示到屏幕,因此不太可能被内联:
void DisplayAdd(int a, int b)
{
cout << a << " + " << b << " = " << a + b << endl;
cout << "Return address from " << __FUNCTION__
<< " " << _ReturnAddress() << endl;
}
_ReturnAddress 是一个内部函数,它报告控制将在何处返回。可使用它来标识内联函数。
Add() 在 gl-g7.cpp 中声明,同时还声明一个由它设置的全局变量:
void* inlineReturnAddress; // set in Add()
int Add(int a, int b); // implementation in module.cpp
实现位于 module.cpp 中:
int Add(int a, int b)
{
inlineReturnAddress = _ReturnAddress();
return a+b;
}
要编译该程序且不使用 Whole Prgram Optimization,请使用以下命令行:
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
- ››Visual C#两分钟搭建BHO IE钩子
- ››Visual C++优化对大型数据集合的并发访问
- ››优化精髓之商业性网站常遇见的问题和误区
- ››优化增强您的Visual C++应用程序
- ››VISUAL C++中的OCX控件的使用方法
更多精彩
赞助商链接