https://clang.llvm/index.html

通用性和效率是否可以兼得?

LLVM:LLVM是项目全名,该项目是模块化、可重用的编译器以及工具链技术的集合。

LLVM架构:

  • 不同的前端后端使用统一的中间代码LLVM Intermediate Representation。
  • 如果需要支持一种新的编程语言,那么只需要实现一个新的前端。
  • 如果需要支持一种新的硬件设备,那么只需要实现一个新的后端。
  • 优化阶段是一个通用阶段,不需要对其进行修改。
  • 相比之下,GCC的前后端耦合紧密,故其为了支持一门新的语言或者平台,十分困难。

Clang:LLVM的一个子项目,基于LLVM架构的C/C++/Objective-C编译器前端

相比于GCC,Clang有如下优点:

  1. 编译速度快:在某些平台上,Clang的编译速度显著的快过GCC,Debug模式下编译OC的速度比GCC快3倍;
  2. 占用内存小,Clang所占用内存是GCC的五分之一左右;
  3. 模块化设计,Clang采用基于库的模块化设计,易于IDE集成及其他用途的重用;
  4. 诊断信息可读性强:在编译过程中,Clang创建并保留了大量详细的元数据,有利于调试和错误报告;
  5. 设计清晰简单,容易理解,易于扩展增强;

更多推荐

【clang】一款新的开源的跨平台的C语言编译器