【问题标题】:MinGW vs Visual Studio 2008 output code quality [closed]MinGW vs Visual Studio 2008 输出代码质量 [关闭]
【发布时间】:2011-01-13 23:24:36
【问题描述】:

几天前有人告诉我,最新版本的 g++ 生成的 x86 代码比 MSVC 2008 “更好”。基本上,经过全面优化的 GCC 比经过全面优化的 MSVC 生成的应用程序更快。

虽然说这肯定是正确的,如果这是真的,很大程度上取决于应用程序和使用的 C++ 代码(我正在为我的应用程序评估此声明),但我想知道该怎么做别人认为。

本质上,在比较这两个编译器的输出时,您的个人经验是什么?

我问的是关于 MinGW 的问题,但如果您在香草 GCC 方面的经验在这里是有效的,也请随时分享。

【问题讨论】:

  • 就个人而言,我认为您应该将此标记为主观的,因为您要求的是个人经验(而不是权威答案)。作为一种先发制人的措施(并且您的标签已经用完),社区 wiki 也可能不会受到伤害。
  • 这种比较真的很难一概而论。一个编译器可能在一个基准测试上做得更好,而另一个在另一个基准测试上做得更好。最重要的是,这完全取决于程序员是谁以及他们尝试调整它的努力程度。使用特定编译器的程序员可以将代码调整到几乎尽可能快的位置。优化对于热点代码来说很好,但是没有什么可以替代仔细的手动调整以及一个体面的优化编译器。在那个级别,如果编译器之间存在差异,那么它是短暂的。
  • @John:CW 不应该用来抢占任何东西,使用它是错误的,因为无论出于何种原因,您认为某些问题或答案不值得代表。 CW 应该针对引出答案的问题,而不是针对 OP,而是针对“社区”。比较“什么编程卡通最适合我的场景......?” vs “什么是好的编程漫画?”卢卡斯能够选择一个最能帮助他解决他提出的问题的答案,或者他也可以将其改写为更符合 CW 导向。但你是对的主观。

标签: c++ visual-studio performance gcc


【解决方案1】:

我的经验是编译我的 C++ JPEG-LS 图像压缩项目。 http://charls.codeplex.com

对我来说,Visual C++ 的速度要快得多。

我主要使用 Linux 上的 G++ 编译它。经过大量的调整,G++ 版本在相同的硬件(相同的物理机器,双启动为 linux)上仍然慢了大约 10-15%。那是经过数小时搜索真正有帮助的 G++ 优化选项之后。仅使用默认优化编译 G++ 比 Visual C++ 慢 60%。

我的项目可能有点不典型,因为它不是 C,而是 C++,并且需要编译器进行大量内联。在这两个编译器上,我都强制执行内联。

另外,有人向我解释说 x86 的寄存器很少,而 G++ 不擅长分配它们。

更新:

如需更全面地比较 microsoft 和 gnu 编译器,请访问 this C compiler benchmark。 根据我阅读这些数字的方式,Microsoft 和 GCC 之间的 32 位差异是相当的,尽管 GCC 使用配置文件引导优化 (PGO) 进行了测试,而 Microsoft 没有(VS Express 中没有 PGO)。

没有 PGO,Microsoft 在 32 位上更快。在 64 位上,GCC 更快。在这两个平台上,英特尔仍然比任何一个都快。

【讨论】:

  • 你用的是哪个 G++ 版本?
  • “默认优化”是指“-O3”吗?或者只是“默认”,意味着没有优化?
  • 使用“默认优化”,我的意思是-O3。我用 GCC 4.2.3 编译。我还不得不强制 G++ 手动针对现代 CPU 进行优化。我也回到了最新的数据,最后,差异是 10-15%,而不是 20%。请不要生气。
  • 哈哈,谁生气了? :) 你给了我一个有效的数据点,为此我感谢你。
  • 由于没有其他人愿意发布答案并且您的答案很有帮助且内容丰富,因此我将其标记为已接受。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多