企业在Linux上使用哪些C/C++编译器?

12

我已经使用GCC编译器几个月了,它非常出色,并且运行非常良好。但是我想知道大/中型企业在Linux(x86,PowerPC ...)上用哪种C ++编译器进行高度优化/性能。

这似乎是一个非常愚蠢的问题,但是我在任何地方都没有找到答案。

据我所知,最好的PowerPC编译器是XL,但对于x86,我什么也不知道。

编辑:非常感谢所有答案。他们都非常有帮助。你们已经说服我使用GCC ;)问候!


1
gcc和llvm(llvm是新晋选手) - pickypg
ICC和CLANG可以提供更好的编译器错误提示,性能差异并不总是显著。 - Steve-o
@投票关闭的人:这个问题并不具有争议性。可能应该是CW(社区维护),但绝对不是作为“主观和争论性”的关闭候选项。 - Ben Voigt
GCC、ICC 和 Clang 在性能方面基本相同,这是客观比较得出的结论。可能会有一些特定任务供应商(如英特尔)进行了优化,但总体而言它们都非常出色。 - user636044
6个回答

10

我曾经工作的地方,即使对于嵌入式应用/软件,也一直使用gcc。

性能提升更可能来自于你的代码而非编译器选择!


感谢您的回答。我认为GCC和其他编译器之间的差异是最小的。问候! - icedgoal
你是在暗示gcc的性能比其他编译器差吗?有证据吗? - user405725
1
完全没有,我只是在暗示GCC是常用的(由大公司/企业使用),而编译器优化的差异不会像一般代码优化那样对整体性能产生很大影响。 - Colin

5

英特尔销售自己的编译器,这些编译器应该能够生成非常高效的代码...至少在英特尔CPU上。

与GCC相比,ICC的好处在于它使用EDG的C++前端,这意味着它对某些高级C++功能的支持比GCC更好。


5
EDG支持哪些GCC不支持的高级C++功能?(除了export之外,因为除了EDG没有任何编译器费心去实现它,并且在C++0x中已被弃用)。 - HighCommander4
2
@HighCommander:GCC支持大多数EDG支持的功能,但EDG通常被认为是更“符合标准”的编译器,因为它对非标准输入的容忍度比GCC低得多。 - Billy ONeal
2
@HighCommander4:不,export在C++0x中被移除了。但这个单词仍然是保留的。 - Steve Jessop
我之前见过ICC编译器,据我所知,它们在性能方面非常出色,但缺点是它并不便宜 : )。对于开源来说还好,但对于商业用途则不然。祝好! - icedgoal

5

大家都使用GCC - 我曾经工作的一些Sun公司的网站(例如)用开源软件GCC取代了他们糟糕的Sun开发工具(它们实在是糟糕得令人发指)。


1

1

Intel编译器集合,Sun ONE Studio,IBM XL C编译器,Open64,Open Watcom和当然还有GCC。

我推测一些公司必须使用Sun ONE和xlC来移植大型项目,因为通常没有人会使用它们。


1
我告诉你为什么一家大公司使用Sun Studio和IBM xlC工具:支持。也就是说,当他们有一些不寻常的需求(而他们确实有这些需求)时,他们可以直接向Sun或IBM(从中购买了很多东西,包括巨型服务器)寻求补丁来解决这个限制或那个缺失的功能。 - John Zwinck
IBM的xlC/C++编译器(付费)支持非常出色(至少在AIX上 - 因为我没有看到在Linux上使用它的任何理由)。我从来没有见过其他大公司提供如此好的支持。 - vond
至于SunCC编译器-由于其标准库,它存在问题。 SunCC附带旧版本4的STLport,由于单个全局互斥锁,在多线程应用程序中表现非常糟糕。 libCstd在性能方面要好得多,但它非常古老,有些结构必须更改。总的来说,我非常喜欢使用Sun的分析器(Solaris Studio的一部分),因为它是我所知道的唯一能够测量等待时间的分析器(例如等待互斥锁,阻塞网络I / O操作等)。如果使用GCC编译代码,我不确定是否可能使用它。 - vond

1

EKOPath 4编译器套件

https://github.com/path64/repositories

http://www.pathscale.com/ekopath-compiler-suite

PathScale自由发布EKOPath 4编译器套件的源代码。EKOPath 4是一款高性能编译器,直到现在一直是专有软件,每个许可证需要近2000美元,但现在它是开源的,并且可以在许多计算密集型工作负载中明显优于GCC。社区对EKOPath现在成为开源(GPLv3)表示非常兴奋。

谢谢。我会看一下的;) 致敬! - icedgoal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接