Visual C++ 优化概述
2007-03-30 21:32:07 来源:WEB开发网核心提示: 该例程执行了大量整数乘法,要在不使用处理器专有指令的情况下编译它,Visual C++ 优化概述(3),请使用以下命令行:cl /O2 /ML /EHsc GL-G7.cpp module.cpp要为 Pentium 4 或 AMD Athlon 计算机编译它,请使用以下命令行:cl /O
该例程执行了大量整数乘法。要在不使用处理器专有指令的情况下编译它,请使用以下命令行:
cl /O2 /ML /EHsc GL-G7.cpp module.cpp
要为 Pentium 4 或 AMD Athlon 计算机编译它,请使用以下命令行:
cl /O2 /ML /EHsc /G7 GL-G7.cpp module.cpp
要运行测试 2,请使用以下命令行:
gl-g7 2
在 Pentium 4 或 AMD Athlon 计算机上,/G7 版本的运行速度提高了 10% 以上。上述代码可以在不带适当芯片的计算机上运行,但与在编译时未使用 /G7 的版本相比,速度稍微慢一点。
Streaming SIMD Extensions 2如果您确信在为具有 SSE2 支持的计算机(例如 Pentium 4 或 AMD Athlon 计算机)生成代码,则可以使用 /arch:SSE2 选项。这样产生的代码将不能在其他芯片上运行,但速度更快,尤其是对含有大量浮点算法的例程而言。
测试 3 执行与测试 2 极为相似的浮点计算:
#define ARRAY_LEN 10000
double array[ARRAY_LEN];
double Calculate()
{
double total = 0;
for (int i = 1; i < ARRAY_LEN; i++)
{
total += array[i-1]*array[i];
}
return total;
}
void Test2()
{
double var1 = 2;
int i;
for (i = 0; i < ARRAY_LEN; i++)
{
array[i] = var1;
var1 += .012;
}
LARGE_INTEGER start, end;
LARGE_INTEGER freq;
SetThreadAffinityMask(GetCurrentThread(), 1);
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
double total = 0;
for (i = 0; i < 100000; i++)
{
total += Calculate();
}
QueryPerformanceCounter(&end);
cout << "Total = " << total << endl;
cout << (end.QuadPart - start.QuadPart)/(double)freq.QuadPart << " seconds" << endl;
}
要在不使用处理器专有指令的情况下编译它,请使用以下命令行:
- ››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控件的使用方法
更多精彩
赞助商链接