首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone GCC / LLVM GCC还是LLVM?

iPhone GCC / LLVM GCC还是LLVM?
EN

Stack Overflow用户
提问于 2010-09-17 23:47:59
回答 5查看 7.9K关注 0票数 20

我在问这里的专家..。

有没有人对哪个编译器最适合iPhone应用做过性能测试?

既然我们可以选择:

  • GCC 4.2
  • LLVM GCC 4.2
  • LLVM编译器1.5

我想知道三个中哪一个能提供最好的表演.

我自己做了一些快速测试,但没有发现有什么不同吗?

你在使用哪个编译器?

EN

回答 5

Stack Overflow用户

发布于 2010-09-18 03:20:21

如果您看到WWDC 2010会议视频 300,开发工具的联合状态,您将看到苹果公司报告使用LLVM编译器构建的应用程序的性能显著提高,超过GCC (在某些情况下速度高达60% )。还可以通过将Clang解析器与LLVM编译器一起使用来进行其他改进。观看312 -“LLVM编译器中的新内容”获得更多信息,以及WWDC 2009中关于LLVM的会话,如果您有它们的话。

在我的一个应用程序中,我看到了从GCC到LLVM1.5的20%的加速,但这并不是一个严格的测试,所以考虑一下这仅仅是一个轶事证据。

我的建议是使用Clang + LLVM (LLVM编译器1.5),如果可以的话,可以使用更快的构建时间、更好的应用程序和更好的编译器错误。如果您使用C++代码或Clang解析器现在无法处理的其他东西,请使用LLVM在编译后的应用程序中获得性能好处。只有在由于某种原因而失败的情况下才去找GCC。这是一个简单的切换,在您的构建设置,以获得即使是少量额外的性能免费在您的终端应用程序。

LLVMCompiler2.0随Xcode 4而来,它完全支持C++,并承诺为编译后的应用程序提供更多的优化,以及更多的编译时加速。Xcode 4甚至在IDE中使用Clang作为语法突出显示/代码更正引擎。这是明确的方向,苹果正在走向他们的编译器。

票数 11
EN

Stack Overflow用户

发布于 2010-09-18 00:05:55

我不知道iPhone的性能,但在其他基准中,Clang的编译速度通常比GCC更快,但生成的代码更慢。Clang也有比GCC更好的错误信息。因此,最好在开发中使用Clang,然后切换到GCC进行最终的生产构建。如果您选择这样一种方法,确保您有一个良好的QA周期,或一个构建系统,也将构建和测试GCC构建,这样你就不会得到任何令人讨厌的编译器相关的惊喜。

Clang中的C++支持略落后于GCC (并且已经测试并修改了更多的C++代码,以了解GCC的怪癖),因此如果您需要使用大量C++,则可能是一个更好的选择。

实际上,您需要为您的需要选择最佳的编译器。基准测试,以及其他人的结果,可以给您提供一个要考虑什么的指示,但是每个程序都是不同的,所以最好的方法是在不同的编译器上对您自己的程序进行基准测试,看看哪个程序最适合您。

票数 3
EN

Stack Overflow用户

发布于 2010-10-26 06:50:20

LLVM GCC 4.2是我使用的。

Clang不能很好地处理C++,这是一项正在进行的工作。这是一个非常有希望的工具包,但在这个时候它还不够稳定(根据我的经验)。

苹果肯定会投资Clang作为他们未来的编译器,但这并不是一个简单的项目。不幸的是,这使我们中的许多人陷入了一个陌生的境地,使用了一个相对较老的编译器和/或一个非常新的编译器(猜猜在我的代码库中开始使用c++0x特性之前,它将使用多少年)。

我已经使用GCC前端与LLVM后端与我的代码库,因为它是可用的(至少,在测试期间)。它已经公开发布多年了,而且相当稳定。我发现与GCC相比,LLVM pass确实产生了更小、更快的可执行文件(尽管我做的针对OS的工作比iOS多)。坦率地说,我无法单独用Clang编译足够多的代码来推荐它(另外,我有很多C++)。

我发现GCC+LLVM组合是可靠的。如果可靠性是您最关心的问题:从GCC开始,在开发中定期测试+LLVM,并在每个Clang发行版上定期编译和使用Clang进行测试,直到您满意为止。GCC+LLVM通常可以用于今天的生产构建。

如果速度是你关心的,从GCC+LLVM开始,定期用Clang进行测试(如果这是你的选择-这对我来说不是--太多的c++)。

关于Clang的解析/词法/生成:Clang的目标是非常符合标准。它们做得很好,但是有许多新的或不存在的特性,这就是为什么我建议您要谨慎,特别是使用C++。

我相信苹果让他们对未来的首选编译器变得显而易见了。不要等太久才能和Clang一起测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3739783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档