技术开发 频道

Visual C++ 2010新特性:IDE五大改进

    【IT168 专稿】在“从VC++6.0不足看Visual C++2010新特性”一文中,我们了解到Visual C++ 2010在语言层面开始支持最新的C++标准,在IDE以及MFC库等方面,也都有了质的变化。对于集成开发环境(IDE)来说,以前的版本中也都有所改变,但都是几次不大的更新。Visual C++ 2010中对IDE有着革命性的增强。

  我们知道Visual C++ 开发环境为项目管理与配置(包括更好地支持大型项目)、源代码编辑、源代码浏览和调试工具提供强力的支持,是开发过程中不可缺少的工具,是提高代码生产力的基本保障。在本文中,我们将对Visual C++ 2010 IDE新特性进行剖析,主要从MSBuild改进的项目和生成系统、更快的编译和更高的性能、更加智能的 IntelliSense、#include 自动完成功能、新的编辑环境等五个方面进行阐述。

  MSBuild改进的项目和生成系统

  Visual C++ 2010中,解决方案和项目的构建系统(build system)从原先基于VCBuild的构建系统,迁移到基于MSBuild(Microsoft Build Engine)的构建系统。那么MSBuild 是什么呢?MSBuild 是 Visual C++ 项目的标准生成系统,是一个基于 XML 的项目文件或可选设置文件的工具。它集成在Visual Studio的开发环境中,为Visual C++ 生成过程提供了便利,提高了效率。MSBuild的加入,使得“一次编码,多个平台运行”成为可能。

  在Visual Studio的早期版本中,只能使用当前版本提供的工具集,如果您想使用新的集成开发环境(IDE),您必须等到能够迁移到新工具集的时候,这给一些时尚的开发人员带来了许多不便。Visual Studio 2010 允许您以多个工具集版本为目标进行生成系统。通过 Visual Studio 2010,您可以将应用程序编译为在若干 .NET Framework 版本的任意一个上运行。 例如,可以将同一个应用程序编译为既能在 .NET Framework 3.5 版本上运行,也能在 .NET Framework 4 版本上运行。下图显示了属性页上的本机多定向设置,您可以将 Visual C++ 9.0 编译器和库作为目标,同时在 Visual Studio 2010 中工作。

1

  图 1 以多个平台为目标的工具集

  另外,由于MSBuild 使用基于 XML 的项目文件格式,该格式直接明了,可扩展性强,同时也增强了C++ 生成系统的可扩展性。当默认生成系统不足以满足您的需求时,可以通过添加自己的工具或任意其他生成步骤来扩展该系统。MSBuild使用任务作为可执行代码的可重复使用单元来执行生成操作,您可以通过在XML文件中定义自己的任务来扩展系统,MSBuild会使用这些XML文件动态生成任务。

  下面的示例描述通过XML文件动态生成任务。该项目包含两个任务:一个是 GenerateResource 任务,用于编译资源;一个是 Csc 任务,用于编译源代码文件和编译的资源文件。 由 GenerateResource 任务编译的资源文件存储在 Resources 项中并传递给 Csc 任务。

1
 

  更快的编译和更高的性能

  Visual Studio 2010通过增强编译器后端的代码生成功能来提高生成应用程序的编译速度、质量和性能。主要表现以下几个方面:

  通过优化单指令多数据(SIMD)的代码生成功能,提高代编译器的性能和代码质量。其中的改进主要包括打破错误依赖关系,向量化常量向量初始化,更好地分配 XMM 寄存器消除多余的负载、存储和移动。

  通过优化x64 代码生成提高x64 平台上的编译速度。LTCG编译(链接时间代码生成)通常会比非LTCG 编译占用更长的时间,尤其是对于大型的应用程序。在 Visual Studio 2010 中,LTCG 编译速度提高高达 30%。在该版本中引入了一个写入 PDB 文件的专用线程,因此您在使用 /DEBUG 开关时会看到链接时间的缩减。

  通过添加对被检测二进制文件的非锁定版本的支持,PGO(按配置优化)检测的运行速度有所提高。还有一个新的 POGO 选项 PogoSafeMode,用于指定优化应用程序时使用安全模式还是快速模式。快速模式是默认行为。安全模式是线程安全的,但比快速模式要慢。

  编译器生成的代码的质量也有所提高。现在完全支持高级矢量扩展 (AVX),这对于 AMD 和 Intel 处理器中通过固有选项和 /arch:AVX 选项进行大量浮点计算的应用程序非常重要,使用 /fp:fast 选项可以使浮点计算更为精确。  

0
相关文章