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

6 c++ release release-mode compiler-optimization visual-studio

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

  • 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机器所产生的性能相比显得苍白无力.

侧注:我相信很多问题都与MS提供的STL版本(Dinkum)直接相关.人们可以请详细说明使用STLPort等与VS C++的经验.

Kon*_*rad 1

我不明白如何包含:

_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
Run Code Online (Sandbox Code Playgroud)

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

更新:此外,编译器只能做这么多。我敢打赌,如果您检测并修复现有的热点,而不是试图从编译和链接阶段寻求微小的百分比(如果是的话)收益,您将获得更高性能的代码。

UPDATE2:根据 MSDN,无论如何在编译发行版本时都不能使用_HAS_ITERATOR_DEBUGGINGWIN32_LEAN_AND_MEAN VC_EXTRALEAN(尽管NOMINMAX性能可能不是禁用此功能的主要原因)可能会给您带来一些性能提升,尽管其余所有功能的价值都值得怀疑。您应该偏爱正确的快速代码,而不是(也许- 我强调也许)稍快但更容易出现风险的代码。

  • @Charles:哦,您如何看待“……在任何专业环境中达到这一点”这句话?也许,**通过使用它们**?!放开它吧。英语正在我们眼前衰落。你无法阻止它!当您能够充分理解某人所说的话语并大致了解他/她想要传达的内容时,请认为自己很幸运。 (4认同)
  • 呸,如果*没有人*使用过英语,情况会好得多!就像拉丁语一样。;) 至于“表演者”,我经常看到这个词被使用。如果你想谈论看起来无知,我会说假装听不懂这个词是更好的方法。 (3认同)
  • @Charles:Arnold Zwicky 是斯坦福大学的语言学教授。他今年早些时候在自己的研究中引用了 Dictionary.com 的词典作为来源:http://arnoldzwicky.wordpress.com/2010/02/28/ottles/。另外,我之前就应该说过,我不同意你把这个词归类为俚语。如果被贴上任何标签,那就是行话,在专业环境中写作时,使用您所写的专业行话是完全可以接受的。*高效*是一个真实的词;字典中的缺席并不会改变这一点。 (3认同)
  • 如果没有更合适的词,叛逆的语言学家该怎么办?最终,词典会流行起来。:-)(无论如何,根据杰夫·博尔特的说法) (2认同)
  • @Charles:根据Dictionary.com,确实如此。它是一个表演者,就像告密者是告密者一样。然而,我认为这是一个非常适合表达这个概念的词,毕竟英语词典是描述性的而不是规定性的。 (2认同)
  • 俚语仍然是单词,@Charles。我不明白你怎么能说这个词不算数,因为这个定义来自“Dictionary.com 的 21 世纪词典”。词典编纂者找到了这个词,并根据他们观察到的使用情况制定了一个定义。他们是为 Dictionary.com 还是为 Merriam-Webster 工作有什么区别?看起来像字典的东西与“真正的字典”有什么区别?我向你保证康拉德没有“化妆”*表演*。这是一个一直被使用的词。http://www.wordnik.com/words/performant (2认同)
  • @Rob - 另外,至于“Dictionary.com 的 21 世纪词典”的有效性,您所需要做的就是与语言学家或语法学家交谈。请他们给您一份可以定义为英语语言知识的有效来源的来源列表。Dictionary.com 不会是其中之一(除非它们的来源是“真正的”词典之一)。 (2认同)