自己建网站怎样建,装修公司网站如何做网络推广,网站建设云南才力,上海阿里巴巴网站建设llvm与gcc llvm 是一个编译器#xff0c;也是一个编译器架构#xff0c;是一系列编译工具#xff0c;也是一个编译器工具链#xff0c;开源 C11 实现。 gcc 相对于 clang 的优势#xff1a; gcc 支持更过语言前端#xff0c;如 Java, Ada, FORTRAN, Go等gcc 支持更多地 …llvm与gcc llvm 是一个编译器也是一个编译器架构是一系列编译工具也是一个编译器工具链开源 C11 实现。 gcc 相对于 clang 的优势 gcc 支持更过语言前端如 Java, Ada, FORTRAN, Go等gcc 支持更多地 CPU 目标架构gcc 支持更多语言扩展比如 gcc 可以完美地支持 Linux Kernel 的编译而 clang 会遇到一些扩展的问题 clang 相对于 gcc 的优势 clang 的 AST 和整个设计是人类可以阅读的clang 的模块化和复用性更好clang 从初衷上就是以 API 的形式设计可以被源码分析工具重构IDE等复用。而 gcc 在设计时就没有这个考量gcc 被设计为“一大团”静态编译器总之就是可以实现功能并且功能很强大上面优点但其中内容基本不可知gcc 的设计就没有考虑复用性clang 可以序列化其生成的 AST 到硬盘上并且被其他程序读入这对整个程序的分析很有用gcc 不支持这项功能llvm 的优化在全程都会进行包括编译时优化链接时优化装载时优化运行时优化以及闲时优化。可参考LLVM全时优化。clang 更快且用更少内存clang 在设计时就考虑提供更加清晰准确地诊断信息error 和 warning 信息gcc 的许可证是 GPLclang 是 BSD
gcc 就像橡皮泥能够塑造出任何优秀的作品但基本没有复用性可言llvm 就像乐高积木虽然更加粗犷但是模块化和复用性极佳。 那么llvm 框架模块化的优势究竟是怎样在其他领域为其他应用带来巨大的便利的呢以下整理自 知乎蓝色 大佬的一个回答LLVM相比于GCC有哪些技术上的优势 统一的IR与模块化。你可以很轻易的抽取LLVM的组件以库的形式出来用于其它领域如抽取LLVM JIT用于 MapD 这样的 GPU 数据库或者抽取LLVM的整个后端优化与CodeGen用于 TVM 这样的深度学习推理框架。这样带来的好处就是 LLVM 不再仅仅是用于给 Clang 等编译器前端提供服务的编译器后端而是可以为需要JIT / CodeGen 功能的所有领域服务比如提到的GPU数据库、深度学习推理框架还包括安全、区块链等应用领域。而这一切LLVM所需要的仅仅是一个统一的中间表示格式LLVM IR。所以现在比较常见的开发模式变为 各种各样的应用DSL、GPU数据库、TVM、安全、区块链等---- 生成 LLVM IR ---- LLVM的优化 ---- LLVM Code Gen ---- 目标代码ARM、x86、Hexagon、NVPTX、AMDGPU、WebAssembly…)。 这在LLVM出现之前基本上是做不到的事情不仅GCC包括其它编译器都可以理解为“一坨”根本抽不出来。 快速的可定制化。这一点架设在第一点的基础上由于在LLVM中编写优化Pass非常方便所以针对各种各样的应用可以变为 各种各样的应用DSL、GPU数据库、TVM、安全、区块链等---- 生成 LLVM IR ---- 编写针对自己特定应用的优化Pass ---- LLVM的优化 ---- LLVM Code Gen ---- 目标代码ARM、x86、Hexagon、NVPTX、AMDGPU、WebAssembly…) 也包括各种各样的应用DSL、GPU数据库、TVM、安全、区块链等---- 生成 LLVM IR ---- 编写针对自己特定应用的优化Pass ---- LLVM的优化 ---- LLVM Code Gen ---- 目标代码ARM、x86、Hexagon、NVPTX、AMDGPU、WebAssembly自己的后端如AI芯片…) 使用现代C代码编写并有良好的代码组织。LLVM使用C11编写代码十分清晰与规范对于阅读并且改写非常的方便。同时其代码组织非常的好每一个地方放什么东西一目了然。而我也与一些同僚聊过大家也都觉得LLVM是更好读、更好改的代码。 License优势。这一点是优势但是是否是技术优势看如何理解但是这一点确实帮助了LLVM很多让其快速被各大公司采用并不断回馈它。
Ref
https://www.youtube.com/watch?vRzrHuP2aVEg
https://www.zhihu.com/question/23807363