C++ 在 VS 中为 'better' Release模式构建定义

标签 c++ visual-studio release compiler-optimization release-mode

我目前使用以下预处理器定义和各种优化设置:

  • WIN32_LEAN_AND_MEAN
  • VC_EXTRALEAN
  • NOMINMAX
  • _CRT_SECURE_NO_WARNINGS
  • _SCL_SECURE_NO_WARNINGS
  • _SECURE_SCL=0
  • _HAS_ITERATOR_DEBUGGING=0

我的问题是,其他 SOer 还使用、添加、定义了哪些其他东西,以便从 VS C++(2008、2010)获得尽可能高性能的 Release模式构建?

顺便说一句,我已经尝试过 PGO 等,它确实有点帮助,但没有什么能与 GCC 相提并论,而且我没有使用流,我说的 C++ 更像 C,但使用模板和STL算法等。

就目前而言,与 GCC 在使用 02 运行 linux(2.6+ 内核)的等效 x86 机器上产生的性能相比,非常简单的代码段在性能方面显得苍白无力。

旁注:我相信很多问题直接与 MS 提供的 STL 版本 (Dinkum) 相关。人们能否详细说明在 VS C++ 中使用 STLPort 等的经验。

最佳答案

我不明白如何包含:

_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS

.. 为您提供更好或更高性能的构建。您所做的只是禁用有关 MS CRT 弃用函数的警告。如果您这样做是因为您知道自己在做什么并且需要与平台无关的代码,否则我会重新考虑。

更新:此外,编译器只能做这么多。我敢打赌,如果您对现有热点进行检测和修复,而不是试图从编译和链接阶段获得极小的 yield (如果有的话),您将获得更高性能的代码。

UPDATE2:根据 MSDN 编译发布版本时无论如何都不能使用 _HAS_ITERATOR_DEBUGGING . WIN32_LEAN_AND_MEAN VC_EXTRALEAN(可能还有 NOMINMAX 虽然性能不是禁用它的主要原因)可能会给你一些性能提升,尽管所有其他的都有可疑的值(value)。您应该更喜欢正确的快速代码,而不是(也许 - 我强调也许)速度稍快但风险更高的代码。

关于C++ 在 VS 中为 'better' Release模式构建定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2460170/

相关文章:

c++ - 在 boost::variant 中调用类型通用的方法

visual-studio - 检查 .lib 文件的工具?

visual-studio - Visual Studio 2010 按字母顺序对编辑器中的函数进行排序

c++ - 使用 Visual Studio 进行分析,在函数的右括号或左括号上包含较大的包含样本百分比? C++

ios - 发布使用旧版 SDK 构建的 iOS 应用程序

c++ - Boost.Graph 示例 4 dynamic_properties 错误

c++ - 如何在 Visual Studio 2010 中使用来自不同 C++ 项目的函数?

c++ - STL 排序保留原始顺序

Scala 发布路线图

ios - 仅针对指定客户群发布 IOS 应用程序