【问题标题】:Why is /Gm the default option in debug configuration as opposed to /MP?为什么 /Gm 是调试配置中的默认选项,而不是 /MP?
【发布时间】:2011-06-02 17:01:17
【问题描述】:

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

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

(如果启用了/Gm,由于不兼容而无法激活/MP。激活的/Gm比激活的/MP花费的时间更长。)

【问题讨论】:

    标签: visual-studio visual-studio-2010 visual-c++ compiler-construction compiler-options


    【解决方案1】:

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

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

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

    documentation 更详细地解释了这些问题,甚至包括一些Guidelines,说明如何确定启用/MP 选项是否是针对个别情况的最佳决定。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 2011-05-27
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      相关资源
      最近更新 更多