我目前使用以下预处理器定义,以及各种优化设置:
我的问题是SOers使用,添加,定义的其他内容是什么,以便从VS C ++(2008,2010)获得尽可能高效的发布模式版本?
顺便说一下,我已经尝试了PGO等,它确实有点帮助,但没有任何与GCC相提并论,我也没有使用流,C ++我说它更像是C但是使用模板和STL算法等。现在看起来非常简单的代码段与GCC产生的性能比较苍白,比如使用02运行linux(2.6+内核)的等效x86机器。
Side-Note: 我相信很多问题都与MS提供的STL版本(Dinkum)直接相关。有人可以详细说明使用STLPort等与VS C ++的经验。
答案 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
虽然性能不是禁用此功能的主要原因)但可能会给你一些性能提升,尽管所有其他功能都值得怀疑。您应该支持正确的快速代码(可能 - 我强调可能)稍快但风险更高的代码。