パスワードを忘れた? アカウント作成
11860081 story
プログラミング

Linux版Google ChromeのビルドにClangが使われる理由 31

ストーリー by hylom
開発者のGCC離れ 部門より

Linux版Google ChromeのビルドにはGCCではなくLLVMベースのコンパイラであるClangが使われている。昨年10月にリリースされたChrome 38からGCC 4.6に代わりClangが採用されるようになったのだが、この理由についてPhoronixが記事にしている。

これによると、Clang採用の理由はすでに多くの開発者がLinux上でClangを使っていたということと、C++のより新しい機能を利用するためらしい。Clangは診断出力が優れており、スピードも速く、さらにChromium(Chromeの開発版)に特化したClang向けプラグインも作られていたため、開発者のClangへの移行が進んでいたそうだ。GCCのより新しいバージョンではC++の新機能のサポートが進んでいるものの、GCCをアップグレードするよりもClangに移行したほうが容易だと判断したという。

実際にClangに移行したところ、性能面ではほとんど変化はなかったが、バイナリサイズは8%ほど小さくなったとのこと(Phoronixの別記事)。

なお、Mac版ChromeはChrome 15よりClangでビルドされており、Windows版ChromeにおいてもClangでのビルドを可能にするよう作業が進められているという。いっぽう、AndroidやChrome OS向けではまだGCCが使われているそうだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2015年01月07日 16時31分 (#2739637)

    > 実際にClangに移行したところ、性能面ではほとんど変化はなかったが、バイナリサイズは8%ほど小さくなったとのこと

    ClangというかLLVMのメリットってGPU使った処理じゃないの?

    むしろAndroidやChrome OS向けではまだGCCが使われているほうが疑問だ
    まだ枯れた技術じゃないからコンシューマーがメインターゲットな方面は様子見なのかもね

    世の流れでPCよりもスマホなどになってるんだから
    そのアーキテクチャの特徴生かせる方がいいでしょうし
    時間の問題じゃないかな

    それでなくてもCPU処理は遊び気味なんだし
    ゲーム向けでない限りは有り余るGPUリソースを
    無駄なく活用したほうがいいよね

    • by Anonymous Coward
      少なくとも Linux Kernelに関しては gccが最適解なので、そこが変わらない限り Androidや ChromeOSの移行はない。
      open source 系は互いに緩い依存関係があるので、歴史があるものは簡単には移行しないし、できないんだよー。

      逆に c++ の最新機能を要求するようなものは、新しいものが向いてるけど。
      • by Anonymous Coward

        しょうがないのは分かるんだけどなんというか年寄り臭いですね。
        近年のMSを見習って欲しい。

        • by Anonymous Coward

          GCCを使うことが年寄り臭いというよりはGCCが年寄り臭いんだよな。

      • by Anonymous Coward

        なんでkernelが。
        「AndroidやChromeOS用」のchromeの話じゃないの?

        • by Anonymous Coward

          bootstrapやるときに単にツールチェインを使い分けるのが面倒くさいってことでは

    • by Anonymous Coward

      GPUに夢を見すぎ

    • by Anonymous Coward

      は?

    • by Anonymous Coward

      clangはベンチではまだGCCに勝てないから、本気が要求される分野、つまり、金出して買ってもらう方では使いようがない。

      • by Anonymous Coward

        金を出す目的はベンチマークのスコアを上げることなのか

      • by Anonymous Coward

        そんな分野には普通インテルのコンパイラ使うだろ。

    • by Anonymous Coward

      コンパイラをGCCからClangに替えたって話を何勘違いしてるの?

  • by Anonymous Coward on 2015年01月07日 16時48分 (#2739641)

    うちの Mac の Xcode では、いまだ OpenMP が使えない。
    単に、Xcode が使ってる Clang が対応してないだけなのかな?
    Xcode が OpenMP に対応したら、gcc から移行するんだけどなぁ。

  • by Anonymous Coward on 2015年01月07日 19時03分 (#2739716)

    GCC 4.6との比較なら、Clangのほうが良かったんだろうけど、
    今のGCC 4.9と比較してClangの優位点はそんなにあるとは思えないんだよね、
    C++11、C++14(全実装はGCC 5.0)は実装してしているし、テンプレート絡みのエラーメッセージはGCCのほうが解りやすい場合もあるから。

  • by Anonymous Coward on 2015年01月07日 19時29分 (#2739731)

    単に関数インライン化の判断のヒューリスティックが違うだけではないだろうか。
    コンパイラオプションをいじるだけですぐに結果が変わりそう。
    実行速度は代わり映えしなかったようで、まあそんなもんだよね、という結果。

    >GCCをアップグレードするよりもClangに移行したほうが容易だと判断したという。

    これもちょっとよくわからんね。

    けっきょく、合理的な理由がある変更というより、新しいものを使いたかったのが本音ではなかろうか。いいと思います。

  • by Anonymous Coward on 2015年01月07日 22時11分 (#2739810)

    比較するとgccの方がGoogleが出しゃばってもデカイ顔しにくいから
    ひっそり進行して気づいたら乗っ取る的なこともできる可能性が高い方を採っただけ

    • by Anonymous Coward

      clangはAppleがコントロールしているのだが。Blinkのように今後forkするほうがよほどありそうだ

typodupeerror

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

読み込み中...