(转)Clang 比 GCC 编译器好在哪里?
2024-09-04 14:45:15
编译速度更快、编译产出更小、出错提示更友好。尤其是在比较极端的情况下。
两年多前曾经写过一个Scheme解释器,词法分析和语法解析部分大约2000行,用的是Boost.Spirit——一个重度依赖C++模版元编程的框架。当时用g++ 4.2编译的情况是:
最后一点,其他同学也有讲到,就是Clang采用的是BSD协议。这是苹果资助LLVM、FreeBSD淘汰GCC换用Clang的一个重要原因。
两年多前曾经写过一个Scheme解释器,词法分析和语法解析部分大约2000行,用的是Boost.Spirit——一个重度依赖C++模版元编程的框架。当时用g++ 4.2编译的情况是:
- 编译速度极慢:完整编译一次需要20分钟
- 编译过程中内存消耗极大:单个g++实例内存峰值消耗超过1G
- 中间产出物极大:编译出的所有.o文件加在一起大约1~2G,debug链接产物超过200M
- 编译错误极其难以理解:编译错误经常长达几十K,基本不可读,最要命的是编译错误经常会长到被g++截断,看不到真正出错的位置,基本上只能靠裸看代码来调试
- 编译速度有显著提升,记得大约是g++的1/3或1/4
- 编译过程中的内存消耗差别好像不大
- 中间产出物及最终链接产物,记得也是g++的1/3或1/4
- 相较于g++,编译错误可读性有所飞跃,至少不会出现编译错误过长被截断的问题了
最后一点,其他同学也有讲到,就是Clang采用的是BSD协议。这是苹果资助LLVM、FreeBSD淘汰GCC换用Clang的一个重要原因。
最新文章
- redis非特定类型命令
- android 照片地理位置 demo
- Nginx去除版本号
- Caused by: java.lang.UnsatisfiedLinkError...解决经历
- stl学习(一)优先队列
- 在RedHat.Enterprise.Linux_v6.3系统中安装Oracle_11gR2教程
- (转载)Java基础知识总结
- Java Inner class &;&; nested class
- 联想电脑win7旗舰版环境下的如何成功配置AppServ
- labview在线帮助网址
- 【LeetCode 209】Minimum Size Subarray Sum
- c#编程:输入、输出
- Git和Github使用
- Centos7上安装单机版redis
- 自学python之路(day1)
- [转]python中的正则表达式(re模块)
- P2153 [SDOI2009]晨跑
- 如何创建并运行java线程 , 多线程使用
- RxJS之工具操作符 ( Angular环境 )
- 并发写Btree原理剖析
热门文章
- 批量删除QQ空间说说
- 在项目引用里添加上对Microsoft Word 11.0 object library的引用
- Python 连接Sql Server数据库 MSSql
- GET和POST区别(转)
- 【起航计划 029】2015 起航计划 Android APIDemo的魔鬼步伐 28 App->;Preferences->;Default Values 偏好默认值
- 【起航计划 004】2015 起航计划 Android APIDemo的魔鬼步伐 03 App->;Activity->;Animation Activity跳转动画 R.anim.×× overridePendingTransition ActivityOptions类
- CentOS7.3下关于DHCP中继代理服务器的详细配置
- 笨办法学Python(十一)
- vuejs样式绑定
- python 3+djanjo 2.0.7简单学习(二)--创建数据库和模型