【发布时间】: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
在我禁用 /Gm 并启用 /MP 后,VS2010 的构建时间显着减少。
我很困惑为什么 /Gm 是默认值。我认为 /MP 更好。
(如果启用了/Gm,由于不兼容而无法激活/MP。激活的/Gm比激活的/MP花费的时间更长。)
【问题讨论】:
标签: visual-studio visual-studio-2010 visual-c++ compiler-construction compiler-options
在我的脑海中,我能想到几个原因:
/MP 选项对构建时间的改进取决于用户可用的处理器数量。 Visual Studio 团队可能不认为(目前)假设每个人 都有多个处理器是合理的。 (请注意,在进行此类优化时,超线程并不一定算作多处理器。)
/MP 选项与某些编译器选项和语言功能不兼容。通常,默认值应尽量提高兼容性,即使在必要时以牺牲速度为代价。在选择将其设为默认设置时,“更好”并不是评估的唯一标准。您不必打开手册即可查看“D9030”或“C2813”编译器警告的含义以及为什么在 VS2008 上编译得很好的项目无法在 VS2010 上编译。
documentation 更详细地解释了这些问题,甚至包括一些Guidelines,说明如何确定启用/MP 选项是否是针对个别情况的最佳决定。
每当您发现自己必须发布关于是否应启用某项功能的指南时,默认情况下可能不应该启用该功能。高级用户(不,这不是矛盾的说法:并非每个使用 Visual Studio 的人都是高级用户,因为此名称与相关产品相关),例如您可以自己决定是否要启用此选项。
【讨论】: