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