clang

普段コンパイラといえばgccを使っている人が多いと思います。もしくはWindowsならVisual Studio付属のマイクロソフトのコンパイラでしょうか。しかし、MacやLinuxではほとんどの人がgccを使っていると思います。しかし、現在は無料でもう一つの選択肢があります。

そのコンパイラはclangというものです。MacでXcodeをインストールしていれば既に入っているでしょう。Ubuntu 10.04以降を使っている人はsudo apt-get install clangでインストールできます。実はclangはフロントエンドだけでバックエンドはLLVMが担っているのですがそれはおいておいてclangのメリットを紹介しましょう。

たとえば以下のコードをコンパイルしてみます。見て分かる通り3行目で括弧の対応が足りません。
[c]
#include <stdio.h>

int main(int argc, char *argv[]
{
printf ("Hello, worldn");
return 0;
}
[/c]

gccでは以下のようなエラーになります。

それに対してclangでは以下のようなエラーになります。

私なんかはgccのエラーに慣れてしまったのでgccのエラーメッセージを見せられても括弧の対応があってないのだろうと推測したり、とりあえず4行目あたりに行ってから原因を考える癖がついているのですが、clangではきちんと括弧の対応がとれていない事を指摘し、どの括弧が問題か指摘しています。また、行数だけでなく何文字目でエラーが出ているのかも指摘しているので素早く見つけることができます。

またコンパイルが早いのも特徴です。以下のようなスクリプトを用いて確かめてみましょう。
[shell]
#!/bin/bash

for i in {1..1000};do
$1 $2 > /dev/null 2> /dev/null
done
[/shell]
これをcompile.shとし、先ほどのソースをtest.cとします。

コンパイルするのは先ほどのエラーのあるソースです。
[plain]
clang$ time ./compile.sh gcc test.c
./compile.sh gcc test.c 8.11s user 3.96s system 93% cpu 12.851 total
clang$ time ./compile.sh gcc test.c
./compile.sh gcc test.c 8.06s user 3.91s system 92% cpu 12.892 total
clang$ time ./compile.sh gcc test.c
./compile.sh gcc test.c 8.06s user 3.87s system 93% cpu 12.725 total
clang$ time ./compile.sh clang test.c
./compile.sh clang test.c 3.49s user 3.66s system 84% cpu 8.468 total
clang$ time ./compile.sh clang test.c
./compile.sh clang test.c 3.49s user 3.61s system 86% cpu 8.255 total
clang$ time ./compile.sh clang test.c
./compile.sh clang test.c 3.49s user 3.62s system 85% cpu 8.273 total
[/plain]
このようにclangの方が早いことが確認できます。他にも省メモリであったりIDEとの連携のための機能があったりするようです。現状では対応している言語はC,Objective-C,C++(?)でプラットフォームはx86,x86_64,ARMと限られていますが、うまくはまれば開発を効率化することができます。

by Y.O

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です