为什么/ Gm是调试配置中的默认选项而不是/ MP?

cod*_*nia 15 compiler-construction visual-studio-2010 compiler-options visual-studio visual-c++

在禁用/ Gm并启用/ MP后,VS2010上的构建时间显着减少.

我很困惑为什么/ Gm是默认值.我认为/ MP更好.

(如果/ Gm已启用,/ MP由于不兼容而未激活.Activated/Gm比Activated/MP需要更多时间.)

Cod*_*ray 17

在我的头脑中,我可以想到几个原因:

  1. 使用该/MP选项改进构建时间取决于用户可用的处理器数量.Visual Studio团队可能认为(假设每个人都有多个处理器)是不合理的.(请注意,对于像这样的优化,HyperThreading不一定算作多个处理器.)

  2. /MP选项与某些编译器选项和语言功能不兼容.通常,默认情况下应尽量使兼容性最大化,即使以必要的速度牺牲速度也是如此.当选择将其设置为默认设置时,"更好"的东西不是评估的唯一标准.您不必破解手册以查看"D9030"或"C2813"编译器警告的含义以及为什么在VS2008上编译得很好的项目无法在VS2010上编译.

文件详细介绍了这些问题,甚至还包括一些指导如何确定是否启用/MP选项是个人情况最好的决定.

如果您发现自己必须发布有关是否应启用某项功能的指南,则默认情况下可能不应启用该功能.高级用户(不,这不是矛盾:不是每个使用Visual Studio的用户都是高级用户,因为这个名称与相关产品有关),就像你可以自己决定是否要启用此选项一样.