经常看到介绍Clang好的文章,却一直没用过。这回趁着重装Ubuntu,试用了下Clang,还真是让人惊喜。虽然不少文章说,Clang和GCC相比,更多的是编译速度快和LLVM 的好处(IDE可以获取类型信息),而性能上并没有太大优势。不过,我的试验却还是显示了巨大的性能差异,当然编译速度快是没得说。我这一直有段程序因为计算量大,每次运行时间大概要12.5秒,改用Clang编译后运行时间却只要7.5秒左右,速度提升了近39%。(不过,我模糊的记得gcc较早版本,不知是Ubuntu12.04还是更之前的默认版本,其实不用12.5秒,后来升级变慢了,当时没深究,总不能又退回去吧。那时在Win7下要13秒左右,gcc应该8~9秒的样子)
简单记录对比了一下运行速度和编译后的文件大小,结果如下:
编译器 | 速度(秒) | 文件1大小 | 文件2大小 | 文件3大小 |
Clang-3.3 | 7.652 | 1.6M | 162.5K | 83.0K |
GCC-4.8 | 12.585 | 1.2M | 147.2K | 89.6 |
MSVC-2010 | 12.74 | 808K | 124K | 87K |
注:Clang和GCC为Ubuntu13.10 64位系统,MSVC2010为Win7 64位系统
结果:Clang比Gcc性能提升了39%,编译速度没记录,但要快得多。不过,编译出的文件大小相比gcc的略大。