LLVM,GCC 4.2和Apple LLVM编译器3.1之间的区别

时间:2012-08-18 16:40:48

标签: ios compiler-construction llvm llvm-gcc

LLVM GCC 4.2和Apple LLVM编译器3.1之间的主要区别是什么?

我对编译器很新,所以任何帮助都表示赞赏。此外,我对这两个编译器如何影响游戏性能特别感兴趣。

2 个答案:

答案 0 :(得分:9)

差异在于技术和速度。

当苹果公司开始从GCC的编译器和工具链过渡时,CLANG仍然年轻且有缺陷,因此LLVM被建成作为GCC的后端,以促进其最终的替换。因此,代码进入并由GCC编译成某种中间形式,但被发送到LLVM以提供最终的机器代码和包装。

最终,LLVM,尤其是CLANG已经足够成熟,可以直接取代GCC,这为编译和机器代码输出质量的提升提供了惊人的速度提升(尽管许多人认为GCC仍然会以牺牲代价来生产质量更好的代码速度)。

但要解决您对游戏性能的担忧:虽然CLANG可能提供“更好”的编译体验,但性能不是编译器的工作。虽然优化和简化是编译过程的一部分,但人们仍然编写滞后游戏或产生无限循环而浪费到堆栈的事实表明性能是你的工作。编译器只能做这么多,其余的由你决定。编译器的类型或供应商也不会影响或破坏您的游戏或影响帧速率或可用性。您应该阅读有关ARM体系结构的低级优化的信息。关于NEONinstruments的一些文章比学习“优化编译器”更有用。

答案 1 :(得分:2)

另一个不同之处:Clang支持 C ++ 11 的大部分内容。 GCC 4.2-Apple不支持C ++ 11。