LLVM GCC 4.2 和 Apple LLVM 编译器 3.1 之间的主要区别是什么?
我对编译器相当陌生,因此非常感谢您的帮助。另外,我对这两个编译器如何影响游戏性能特别感兴趣。
差异在于技术和速度。
当 Apple 开始从 GCC 的编译器和工具链过渡时,CLANG 还很年轻且存在缺陷,因此 LLVM 被构建为 GCC 的后端以方便其最终替代。 因此,代码被 GCC 编译成某种中间形式,然后被发送到 LLVM 以提供最终的机器代码和打包。最终,LLVM,尤其是 CLANG 足够成熟,可以完全取代 GCC,这为编译提供了惊人的速度提升,并提高了机器代码输出的质量(尽管许多人认为 GCC 仍然以牺牲速度为代价生成质量更好的代码) ).
但是为了解决您对游戏性能的担忧:虽然 CLANG 可能提供“更好”的编译体验,但性能不是编译器的工作。 虽然优化和简化是编译过程的一部分,但人们仍然编写滞后的游戏或产生无限循环从而浪费堆栈,这一事实表明“性能”是您的工作。 编译器只能做这么多,剩下的就取决于你了。编译器的类型或供应商也不会影响游戏的成败或影响帧速率或可用性。 您应该阅读有关 ARM 架构的较低级别优化的内容。 几篇关于
NEON 和 instruments 的文章比学习“优化编译器”对你有更多帮助。
另一个区别:Clang 支持大部分