15

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

我对为什么 /Gm 是默认设置感到困惑。我认为 /MP 更好。

(如果 /Gm 被启用,则 /MP 由于不兼容而无法激活。激活的 /Gm 比激活的 /MP 需要更多的时间。)

4

1 回答 1

17

在我的脑海中,我能想到几个原因:

  1. 使用该/MP选项缩短构建时间取决于用户可用的处理器数量。Visual Studio 团队可能认为(目前)假设每个人都有多个处理器是不合理的。(请注意,当涉及到像这样的优化时,超线程并不一定算作多处理器。)

  2. /MP选项与某些编译器选项和语言功能不兼容。通常,默认值应尽量提高兼容性,即使在必要时以牺牲速度为代价。在选择将其设为默认设置时,“更好”并不是评估的唯一标准。您不必打开手册即可查看“D9030”或“C2813”编译器警告的含义以及为什么在 VS2008 上编译得很好的项目无法在 VS2010 上编译。

文档更详细地解释了这些问题,甚至包括一些关于如何确定启用该选项是否是针对个别情况的最佳决定的指南。/MP

每当您发现自己必须发布有关是否应启用某个功能的指南时,默认情况下可能不应该启用它。高级用户(不,这不是矛盾的说法:不是每个使用 Visual Studio 的人都是高级用户,因为此名称与相关产品有关),例如您可以自己决定是否要启用此选项。

于 2011-01-03T06:11:52.540 回答