1

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

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

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

4

1 回答 1

4

没有适合所有项目、目的和期望的最佳编译器。

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

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

于 2012-06-22T09:00:34.043 回答