【レポート】

GCCに匹敵するコンパイラ?! LLVM - BSDCan2008

 

BSDCan2008、およびその直前に開催されたFreeBSD Developer Summitを通じて関係者がもっとも強い関心を持ったのは、もしかするとChris Lattner氏が担当したセッション「BSD licensed C++ compiler - LLVM and Clang: Next Generation Compiler Technology」だったかもしれない。同氏のセッションで初めてLLVM(Low Level Virtual Machine)について知ったという人も少なからずいたようだ。Lattner氏はLLVMのチーフアーキテクトであり、同技術を語るには適切な人物といえる。

モダンテクニックで開発されたマルチ言語コンパイラインフラ

LLVMはモダンなテクニックで開発されたコンパイラインフラストラクチャだ。プログラミング言語に依存しないモダンなオプティマイザとコードジェネレータを持ち、複数のプログラミング言語とアーキテクチャをサポートし、GCC互換フロントエンドllvm-gccを持っているという特徴がある。再利用可能なオプティマイザをさまざまなポイントで実行して最適化を行う。静的ビルドも動的ビルドもその組み合わせも可能だ。さらに特記すべきはllvm-gccフロントエンドを除いて、GPLではなくBSD Licenseで開発されているという点だ。

LLVM optimizer features used by llvm-gcc - BSDCan2008 Chris Lattner氏の発表資料より抜粋

Other LLVM features used by llvm-gcc - BSDCan2008 Chris Lattner氏の発表資料より抜粋

LLVM Link Time Optimization - BSDCan2008 Chris Lattner氏の発表資料より抜粋

OpenGL to LLVM: At runtime - BSDCan2008 Chris Lattner氏の発表資料より抜粋

既存のOSS C/C++/Objective Cコンパイラは古いコード生成技術に基づいており、JITやクロスファイルオプティマイザといったモダン技術を採用していないため、ほかのアプリケーションで再利用しにくく、さらにリリースごとに遅くなっているという状況にある。LLVMはモダンなテクニックを活用することでこうした状況を改善することに目的がおかれている。従来どおり静的にコンパイルすることもできるし、JITで動作させることにも対応している。

FreeBSDのメインコンパイラはGCCだが…

FreeBSDではメインのコンパイラにGCCを採用している。GCCはOSS C/C++コンパイラのメインストリームにあり、複数のアーキテクチャに対応している。今のところGCCをメインコンパイラとして採用するのはリーズナブルな選択肢だ。しかし、*BSDではコンパイラがGPLであることに抵抗を感じる向きもあり、GCCがGPLv3に移行した場合の影響を懸念する声もある。そのため、BSD Licenseや他ライセンスのC/C++コンパイラの模索も常に続けられている。

LLVMというコンパイラがあることは以前から知られており、すでにPorts Collection(devel/llvm)にも追加されている。野心的な目標を掲げていることが同プロジェクトページからよくわかるが、GCCが存在する中でそういったコンパイラの開発が可能なのか半信半疑であったり、そもそもGCC以外の候補をそれほど気にしていなかったという状況だったと言えるだろう。しかし、サイトのドキュメントを読むのと、実際に担当者から話を聞くのとでは、印象がだいぶ違ってくる。発表を聞く開発者はLLVMに大きな関心を持ったようだった。

LLVMの魅力は高速さ、上質さ、ライセンス、発展性

LLVMが魅力的なのは、BSD Licenseである以外にも、GCC 4.2のリプレースを目指したllvm-gccフロントエンドを用意しているところにある。簡単に言ってしまえば、gccをllvm-gccに変更するだけで入れ替えができる。しかも入れ替えるだけで最適化時間が30%ほど短縮されるほか、生成されるコードが5%から10%ほど優れたものになるという。

Carbon.h Parsing / Analysis Time - BSDCan2008 Chris Lattner氏の発表資料より抜粋

ProgreSQL Front-end Times - BSDCan2008 Chris Lattner氏の発表資料より抜粋

LLVMがGCC 4.2のリプレースを目的としたフロントエンドllvm-gccを持っているからといって、完璧にすべての互換性を実現しているわけではない。それにFreeBSDがLLVMへの移行に取り組んだとしても、その対応はすぐに終わるというものではないだろう。しかし、BSD Licenseであり、コンパイル性能も生成されるコードの質も良いということになれば、開発者が興味を惹かれないわけがない。

しかも、カーネルのみならず、Ports CollectionのビルドにLLVMを採用すればビルド時間を短縮できる可能性がある。OpenOffice.orgやKDE、Gnomeなど大規模アプリケーションが増える中、ビルド時間が短いうえに上質なコードを生成するコンパイラの存在は魅力的だ。ports committerにとってもLLVMは魅力的である。

GCCの代わりとなるか、今後の開発に注目

LLVMではGCC 4.2互換のフロントエンドではなく、独自のC/C++/Objective CフロントエンドとしてClangを持っている。GCCフロントエンドは遅いうえにメモリを大量に消費し、さらに最近のIDEが要求する機能に対応しきれないため、それらを解決したフロントエンドが必要という発想によるものだ。Clangはコンパイル時間がGCCよりも高速なうえにモダンなIDEや商用コードチェッカにも対応している。

さらにLLVMは、C/C++/Objective C以外の言語への発展も可能だ。多くのプログラミング言語ですでに実装された最適化技術が採用できるということになれば、LLVMの発展性の高さは魅力的なものだ。もちろんその間、GCCの開発も停滞しているわけではない。GNU binutilsの一部として新しいELFリンカ機能が登場するなど改善も続けられている。

ともあれ、LLVMは魅力的なコンパイルインフラとしての認識を広めつつあるようだ。直近でFreeBSDがLLVMを採用するとは思えないが、長期的に見た場合、LLVMへの移行も起こりうるということは抑えておくと良いだろう。

関連記事

性能改善ツールの要「DTrace」がFreeBSD 8にマージ - BSDCan2008
[2008/6/3]
FreeBSD、U-Boot対応で組込開発負荷軽減 - BSDCan2008
[2008/6/3]
問題報告システムをより使いやすいものにするには? - BSDCan2008
[2008/6/3]
急成長! FreeBSD/mips対応アプライアンス - BSDCan2008
[2008/6/3]
Jail + リソース制限機能、FreeBSD 8で登場か - BSDCan2008
[2008/6/3]
FreeBSD 7、1500%ピーク性能改善の裏にあるもの - AsiaBSDCon 2008
[2008/4/4]
GEOMでジャーナリング、UFSの機能を柔軟に拡張 - AsiaBSDCon 2008
[2008/4/4]
f.root-servers.netを支えるFreeBSDとBIND9 - AsiaBSDCon 2008
[2008/4/4]
使いやすさ抜群! FreeBSDベースのデスクトップOS PC-BSD - AsiaBSDCon 2008
[2008/4/4]
FreeBSD 7.0登場 - 高負荷時ピーク性能が1500%改善
[2008/2/28]
FreeBSD 6.3登場 - 2010年1月セキュリティ対応期限
[2008/1/20]
超高速HTTPアクセラレータ最新版"Varnish 1.1"登場
[2007/7/23]
備えあれば憂いなし - pfSense/pfSyncでネットワーク管理を容易に
[2007/5/24]
PCをNASサーバへ変身させる! かんたん本格派NASソリューション - FreeNAS登場
[2007/5/24]
高速化プログラミングの参照実装としても活用される「Varnish」
[2007/5/24]
FreeBSDにおけるサーバ仮想化の取り組み
[2007/5/21]
足掛け7年のサクセスストーリ - マルチコアシステムで大幅に性能向上達成
[2007/5/19]
Ports Collection 17,000へ - インフラやメカニズムの改善へ着手
[2007/5/19]
インストーラが世代交代 - sysintall(8)からfinstallへ
[2007/5/18]


転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

「ぼのぼの×HELLO KITTY」新作や「ぼのちゃん」初グッズを夏コミで販売
[15:46 7/31] ホビー
[高橋愛]“ハリポタ愛”語る 「一緒に年を重ねている感じ」
[15:26 7/31] エンタメ
[真田丸]長宗我部盛親役の阿南健治がゆかりの地・高知へ 「龍馬だけではなく盛親も応援して」
[15:20 7/31] エンタメ
カリスマ実演販売士・レジェンド松下の「実力」
[15:05 7/31] エンタメ
『妖怪ウォッチ』最新版「ドリーム」発売、メダルでゲーム・筐体と連動
[15:00 7/31] ホビー

求人情報