使用如下命令,统计了一下这三个编译器的代码行数情况。
find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l

结果如下,供参考。这三个编译器使用的都是各个代码库中的最新版本,因为《编译点滴》使用git svn工具,所以命令行里有“git”,而标明的版本号却是SVN的。
Open64(SVN R3782):

open64$ find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l
13164644

LLVM(LLVM R148206, 包含Clang  ):
llvm$ find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l
2468255

GCC(R183190):
gcc$ find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l
12823155

 

估计很多朋友都关注到了,LLVM 终于发布了3.0版本,这个版本有哪些新的变化呢?我们先从三个大的特性看起。

Continue reading »

 

Open64的Release manageer刚刚发布了5.0版本。

Continue reading »

 

Full Time Position

Compiler Engineer, Stream Computing

We are currently looking for a software engineer as part of the core team developing OpenCL, a new open standard for heterogonous general purpose programming, compilers for multi-core CPU and many-core graphics systems.

The engineer will be involved in all aspects of OpenCL compiler features, development and maintenance and will participate in performance tuning for new multi-core x86 and graphics hardware running on multiple operating systems. The position will involve interfacing with ASIC design engineers and architects, OS engineers and peers in related development teams.
Continue reading »

 

有图有真相!且主打和GCC兼容。

LLVM广告

 

Nico Weber在Clang的maillist里发布了条可喜消息,clang已经能成功编译chromium。
Clang是LLVM的前端,前不久实现了C语言的自举,最近又成功编译了chromium,而且没有运行问题,可喜可贺。编译使用的版本clang r116145,平台MacBook Pro 4G内存,I5处理器.

编译时间上,Clang比GCC快了10%-87%.编译出的可执行文件clang比gcc小10%。针对Google V8 JavaScript的性能测试显示,gcc和clang的性能差不多。HTML的相关测试,clang也和gcc相差不多,稍好一点(clang 5077->gcc 5163)。gcc版本 gcc-4.2.1

clang的不足,编译GPU硬件加速相关代码会很耗时和内存,可能有bug。如果调过此bug,clang的编译速度可能还会稍快一些。

这里说了如何用clang编译chromium。是编译后的记录文件。这是邮件全文:http://permalink.gmane.org/gmane.comp.compilers.clang.devel/11246

评:

  • Clang正在慢慢成熟,正确性方面也在不断提升,值得庆贺。
  • clang一直标榜的高速编译,在上面的测试中有所体现,但并不是那么明显。
  • 编译所得的性能个人感觉不具说服力。因为chromium中Javascript的性能是用JIT的,而JIT这部分是clang编译出的解释器把javascript的代码再编译成可执行码。所以clang只要保证解释器中jit部分所得的代码性能对JIT的性能影响微乎其微。
 

写这篇博文,是因为最近某上海惠普Open64编译部门师兄来实验室搞了个小座谈(惠普在中国准备扩大编译团队,有感兴趣的,别错过机会).期间,我就问了关于LLVM的问题,Open64社区如何看待可能来自LLVM的威胁。以下内容,是我自己的记录和演绎版本,本人不保证完全是原话和原意,请各位酌情理解:)

师兄先举了几个例子。他前天在清华和别人聊的时候,也聊到这个问题,虽然LLVM很活跃,但毕竟很年轻。虽然概念很好(前瞻-全时优化和LLVM-2 前瞻-全时优化和LLVM-1),但实施起来很难。就目前LLVM所做的工作来说(前瞻-LLVM大事记(2004-2010) ),大部分只是在重复Open64十几年前所做的。其实SSA的思想最早也是来自Open64.之后才开始在GCC,LLVM中有涉及。 Google内部也曾经争论过是否应该推LLVM,曾经争论很大,但最终还是没有推。当时支持LLVM的人,大多是对编译不太了解的人,而反对的,则是在编译上有很多经验的人。

Continue reading »

 

认识Native Client

Native Client (Nacl) 是Google提出的一种让浏览器直接运行机器码的技术,让Web应用可以从客户机上获得更多的性能,同时又不会引起安全问题。这个技术类似于微软的ActiveX。程序员可以使用C++或者其他语言编写web应用程序,再通过Nacl发布。程序中可以调用一些系统服务中安全的API,如声卡或者图形显示等。Nacl能使用的本地系统调用都是已经规定好的,所以安全性有保证。这篇文章介绍如何使用Native Client。 Continue reading »

 

LLVM2.7已经发布好几天了。今天尝试一下:)

1,下载相关源码包:

wget -c http://llvm.org/releases/2.7/llvm-2.7.tgz
wget -c http://llvm.org/releases/2.7/clang-2.7.tgz
wget -c http://llvm.org/releases/2.7/llvm-gcc-4.2-2.7.source.tgz
wget -c http://llvm.org/releases/2.7/llvm-test-2.7.tgz

llvm-2.7.tgz是LLVM的主要源码包,clang-2.7.tgz:Clang前端,llvm-gcc-4.2-2.7.source.tgz:GCC4.2前端,llvm-test-2.7.tgz:LLVM 测试验证包。
Continue reading »

 

因为之前的两篇博文前瞻-全时优化和LLVM-1前瞻-全时优化和LLVM-2都是基于Chris Lattner 2004年发表在CGO的文章写的。所以需要介绍一下LLVM从2004到2010这六年的变化,LLVM的开发社区很活跃。

从2004年三月到2010年4月,LLVM共发布了1.2-1.9,2.0-2.7,16个版本,至少每年发布两个版本。详细的历史发布版本和release都能从这里找到。

Continue reading »

2009-2011© 编译点滴 Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量