在我禁用/Gm 并启用/MP 后,VS2010 上的构建时间显着减少。
我很困惑为什么/Gm 是默认值。我认为/MP 更好。
(如果启用了/Gm,则/MP 不会因为不兼容而被激活。激活的/Gm 比激活的/MP 花费更多的时间。)
最佳答案
在我的头顶上,我可以想到几个原因:
/MP
改进构建时间选项取决于用户可用的处理器数量。 Visual Studio 团队可能认为假设每个人都有多个处理器是不合理的(目前)。 (请注意,当涉及到这样的优化时,超线程不一定算作多处理器。)/MP
选项与某些编译器选项和语言功能不兼容。通常,默认值应尽量提高兼容性,即使在必要时也要以牺牲速度为代价。在选择将其设为默认设置时,“更好”并不是评估的唯一标准。您不必打开手册来查看“D9030”或“C2813”编译器警告的含义以及为什么在 VS2008 上编译得很好的项目在 VS2010 上无法编译。 documentation更详细地解释了这些问题,甚至包括一些 Guidelines关于如何确定是否启用
/MP
选择是针对个别情况的最佳决定。任何时候您发现自己必须发布关于是否应该启用某个功能的指南,默认情况下它可能不应该启用。高级用户(不,这不是矛盾的说法:并非每个使用 Visual Studio 的人都是高级用户,因为此名称与相关产品相关),例如您可以自行决定他们是否要启用此选项。
关于visual-studio - 为什么/Gm 是调试配置中的默认选项而不是/MP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582288/