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

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,请使用以下命令行:

1 2 3 4  下一页

Tags:Visual 优化 概述

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