哪个是最优的C / C ++编译器?

时间:2012-06-21 21:42:12

标签: gcc llvm gpl clang

我一直在用gcc编译我的C / C ++代码,但是我最近才意识到它不是唯一的免费编译器。

我一直在玩转换,因为其他一些编译器,特别是clang,似乎表现出很多希望。我的编译器的标准是立即符合C99标准,更多标准随着它们变得更加普遍,以及它是免费和开源的,并尽可能优化地编译我的代码。快速编译对我来说并不是那么重要,但总是一个很好的加分。也就是说,如果有任何编译器似乎很快就会超过gcc,我想知道为了学习而现在是否值得切换。

我将主要用它来编译C ++代码,所以这对我来说优先于C。我将在linux上构建linux,所以一个好的CLI是必须的。只要二进制文件具有良好的质量,我就不介意某种程度的不稳定性。

1 个答案:

答案 0 :(得分:4)

没有针对所有项目,目的和期望的最佳编译器。

  • 每个项目(包括gccllvm等编译器项目)的优先级略有不同(例如支持最新语言标准,标准纯度与性能,编译性能与运行时性能等) )。
  • 有许多基准和方法可以比较它们。然而,通常,如果一个人赢得编译一个程序(任意定义胜利),通常存在其他程序,其他编译器获胜(对于相同的胜利定义)。
  • 当与不同的优化选项一起使用时,前一点对同一编译器也有效。有时一些优化(希望更经常:-)有所帮助,但有时(对于其他代码)它们实际上会损害性能。
  • 由于不使用相同级别的优化等,编译器基准也总是受到批评,因为对比文章的某些读者实际上期望其他方面被标记为基准。这是因为每个编译器具有不同的默认优化级别,在不同的优化级别上使用不同的优化,在不同的编译器中实现相同的优化,并且仅在某些编译器中支持某些优化。
  • 不同平台或CPU型号的结果也可能不同。
  • gccllvm都非常积极地发展,因此它们之间的任何比较在发布时已经过时了。

这也导致开发人员也将他们的个人(不喜欢)投射到一个或其他编译器,有时会导致火焰战争。所以你能得到的唯一答案是:“这取决于你。”