WEB开发网
开发学院软件开发VC Visual C++ 优化概述 阅读

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;
}

要在不使用处理器专有指令的情况下编译它,请使用以下命令行:

上一页  1 2 3 4  下一页

Tags:Visual 优化 概述

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接