当我从 VS6 升级到 VS2005 时,我发现使用默认编译设置的国际象棋引擎程序的速度提高了 10%。
想知道一般情况下是否也是如此,以及从那时起对 MS C++ 编译器的最终输出进行了哪些改进(如果有的话)。
关于从 2010 年之前的 VC++ 版本迁移到 VC++ 2010+:
如果您大量使用 STL 容器和算法,升级到 VC++ 2010+ 可能提供实质性不仅仅是 10% 的改进,因为 VC++ 2010+ 实现了 C++11 的移动语义。
我记得 Boost 邮件列表上的一个特定帖子声称,由于此原因,从 VC++ 2008 迁移到 VC++ 2010 时,他们的应用程序性能提高了 900%:
[boost] [GGL] [geometry] 使用 Visual C++ 2010 时莫名其妙的速度优势
我很确定每个版本都至少添加了一点新的/更好的优化。对于我测试过的大多数代码,连续版本之间的改进约为 3-4%,因此您可能会看到另外 10% 的改进,但我预计会减少一点。
VS2012 中引入的有限自动矢量化(VS2010 中需要 simd 内在函数)可能有助于解释 Boost 报价。 在我的测试中,VS2013 与 VS2012 相比,损失多于收益。 VS2013和2015似乎更注重引入新语法而不是性能。