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

16
在禁用/Gm并启用/MP之后,VS2010的构建时间显著减少。
我对为什么/Gm是默认设置感到困惑,我认为/MP更好。
(如果启用/Gm,则由于不兼容性,/MP不会被激活。激活/Gm需要比激活/MP需要更多的时间。)
1个回答

17

我能想到几个原因:

  1. /MP 选项在构建时间上的改进取决于用户可用的处理器数量。Visual Studio 团队可能认为(目前)假定 每个人 都有多个处理器不太合理。(请注意,超线程在像这样的优化中并不一定算作多个处理器。)

  2. /MP 选项与某些编译器选项和语言特性不兼容。通常,缺省值应尽量最大化兼容性,即使需要牺牲速度。选择将其设置为默认设置时,“更好”不是唯一的评估标准。您不应该打开手册查看“D9030”或“C2813”编译器警告意味着什么,以及为什么在 VS2008 上编译正常的项目在 VS2010 上无法编译。

文档详细解释了这些问题,并包括一些指南,说明如何确定是否启用 /MP 选项是个体案例的最佳决策。

任何时候,当你需要发布关于是否启用功能的指导方针时,该功能很可能不应默认启用。像你这样的高级用户(不是自相矛盾的词语:并非每个使用 Visual Studio 的人都是高级用户,因为此称号是相对于所讨论的产品而言的)可以自行决定是否要启用此选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接