C ++定义了VS中“更好”的发布模式构建

时间:2010-03-17 05:59:24

标签: 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

我的问题是SOers使用,添加,定义的其他内容是什么,以便从VS C ++(2008,2010)获得尽可能高效的发布模式版本?

顺便说一下,我已经尝试了PGO等,它确实有点帮助,但没有任何与GCC相提并论,我也没有使用流,C ++我说它更像是C但是使用模板和STL算法等。

现在看起来非常简单的代码段与GCC产生的性能比较苍白,比如使用02运行linux(2.6+内核)的等效x86机器。

Side-Note: 我相信很多问题都与MS提供的STL版本(Dinkum)直接相关。有人可以详细说明使用STLPort等与VS C ++的经验。

1 个答案:

答案 0 :(得分:1)

我没有看到如何包含:

_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS

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

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

UPDATE2 :根据MSDN无论如何编译版本构建时,都无法使用_HAS_ITERATOR_DEBUGGING。 WIN32_LEAN_AND_MEAN VC_EXTRALEAN(可能NOMINMAX虽然性能不是禁用此功能的主要原因)但可能会给你一些性能提升,尽管所有其他功能都值得怀疑。您应该支持正确的快速代码(可能 - 我强调可能)稍快但风险更高的代码。