(转)Clang 比 GCC 编译器好在哪里?
两年多前曾经写过一个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的一个重要原因。
(转)Clang 比 GCC 编译器好在哪里?的更多相关文章
- linux下Clang和gcc的区别
		Clang 比 GCC 编译器的优势: 编译速度更快 编译产出更小 出错提示更友 好,比如 clang 在编译过程可以直接指出相对简单的出错位置以及它 “ 认为 ” 正确的方式 . 内置有静态分析工具 ... 
- 在CentOS 7.2下升级gcc编译器的版本
		默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ... 
- C语言的编译过程、安装gcc编译器以及设置环境变量
		以我对C语言编译过程的了解,我用了一点时间画了一个图,提供给大家参考一下,希望有些能对您的问题提上帮助. 前几天刚初步学习了C语言的编译过程,感触挺深的.在C语言中头文件其实起了一个很大的作用. 1. ... 
- 利用GCC编译器生成动态链接库和静态链接库
		转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ... 
- GCC编译器编译链接
		在gcc编译器环境下,常见的文件扩展名的含义如下: .c:C源程序,经过预编译后的源程序也为.c文件,它可以通过-E参数输出. .h:头文件 .s:经过编译得到的汇编程序代码,它可以通过-S参数输出. ... 
- Linux安装gcc编译器详解
		本人使用的是CentOS 6.5 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于配备了yum的Linux发行版而言,安装gcc编 ... 
- GCC编译器使用
		一.GCC简介 通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进 ... 
- GCC编译器和GDB调试器常用选项
		http://blog.csdn.net/u014328976/article/details/46745349 GCC编译器 gcc hello.c -o hello ... 
- 临时改GCC编译器,重启后失效
		临时改GCC编译器,重启后失效.例如,用如下命令: export CROSS_COMPILE= <gcc 文件所在的目录>/arm-linux-gnueabihf- 本例中使用的命令如下: ... 
随机推荐
- C#继承 多态
			1.继承 允许我们根据一个类来定义另一个类.已有的类被称为的基类(父类),新的类被称为派生类(子类). 单一继承:只能有一个基类,一个基类可以派生出多个派生类,一个类别只可以继承自一个父类. 多重继承 ... 
- Hive总结
			一.什么是Hive 1.Hive 由 Facebook 实现并开源 2.是基于 Hadoop 的一个数据仓库 3.可以将结构化的数据映射为一张数据库表 4.并提供 HQL(Hive SQL)查询功能 ... 
- 构建web应用
			一.web服务器示例 var http = require('http'); http.createServer(function(req, res){ res.writeHeader(200, {C ... 
- Sharepoint2010新建一个用户的方法
			最近在做关于SharePoint的相关开发,在开发中需要用到测试用户进行相关权限的测试,所以就需要创建一个新的用户进行,但是在网上找了很久都没有找到关于创建一个新用户的资料,最后终于在http://w ... 
- Mysql慢查询 [第一篇]
			一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态slow_q ... 
- easyui datagrid 动态加载数据 渲染问题,表格错位问题
			$('#dg').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',width:100}, {fie ... 
- Debug view 是个好工具
			有时候不用 VS 调试, 在 代码里面加入 Debug.Writeline(" Debug information!!"); 这个时候打开 debug view 就可以检测出输出 ... 
- CSS 笔记之 CSS 选择器
			/*先设置背景再设置前景*/ pre{ background-color: #f8f8f8; border: solid 1px #ccc; border-radius: 3px; overflow: ... 
- springboot 修改和设置 banner
			springboot 修改和设置 banner 先上图 修改步骤 1.在src/main/resources下新建一个banner.txt文档 2.通过http://patorjk.com/softw ... 
- js中字符串怎么转化为日期
			var str = "2010-08-01"; // 转换日期格式 str = str.replace(/-/g, '/'); // "2010/08/01"; ... 
