我不知道它是否适合提出这个问题。但是为什么Apple选择使用llvm
及其clang
实现代码来编写OpenCL / OpenGL?它给他们带来了什么好处以及如何?请原谅我对这个话题的无知,我对此并不了解。
答案 0 :(得分:2)
Straight from an LLVM/Apple Developer
LLVM在运行时以两种不同的方式使用:
固定功能顶点处理中的运行时代码特化 管道。基本上,OpenGL管道有很多参数(雾 启用?顶点有纹理信息吗?等)很少改变: 执行完全分支代码沼泽分支预测器和 表现不佳。要解决此问题,请将代码预编译为LLVM .bc 表单,从中制作,优化代码的特化, 和JIT在运行时需要编译。
OpenGL顶点着色器是使用一族编写的小程序 编程具有高域特定功能的语言(例如点 产品,纹理查找等)。在运行时,OpenGL堆栈进行转换 将顶点程序转换为LLVM形式,运行LLVM优化器传递然后再运行JIT 编译代码。
(上面链接中的更多细节)
答案 1 :(得分:0)
因为它们有助于Clang / LLVM的开发,并且因为使用LLVM / Clang编译的源代码比GCC产生更快的二进制代码...
Clang的开发人员声称它可以减少内存占用 与竞争编译器相比,编译速度提高了 GCC。为了支持他们的主张,他们提出,截至2007年10月, Clang编译碳库的速度是GCC的两倍, 同时使用大约六分之一的GCC内存和磁盘空间。