Linux版Google ChromeのビルドにClangが使われる理由 31
ストーリー by hylom
開発者のGCC離れ 部門より
開発者の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が使われているそうだ。
そこ? (スコア:0)
> 実際にClangに移行したところ、性能面ではほとんど変化はなかったが、バイナリサイズは8%ほど小さくなったとのこと
ClangというかLLVMのメリットってGPU使った処理じゃないの?
むしろAndroidやChrome OS向けではまだGCCが使われているほうが疑問だ
まだ枯れた技術じゃないからコンシューマーがメインターゲットな方面は様子見なのかもね
世の流れでPCよりもスマホなどになってるんだから
そのアーキテクチャの特徴生かせる方がいいでしょうし
時間の問題じゃないかな
それでなくてもCPU処理は遊び気味なんだし
ゲーム向けでない限りは有り余るGPUリソースを
無駄なく活用したほうがいいよね
Re: (スコア:0)
open source 系は互いに緩い依存関係があるので、歴史があるものは簡単には移行しないし、できないんだよー。
逆に c++ の最新機能を要求するようなものは、新しいものが向いてるけど。
Re: (スコア:0)
しょうがないのは分かるんだけどなんというか年寄り臭いですね。
近年のMSを見習って欲しい。
Re: (スコア:0)
GCCを使うことが年寄り臭いというよりはGCCが年寄り臭いんだよな。
Re: (スコア:0)
なんでkernelが。
「AndroidやChromeOS用」のchromeの話じゃないの?
Re: (スコア:0)
bootstrapやるときに単にツールチェインを使い分けるのが面倒くさいってことでは
Re: (スコア:0)
GPUに夢を見すぎ
Re: (スコア:0)
は?
Re: (スコア:0)
clangはベンチではまだGCCに勝てないから、本気が要求される分野、つまり、金出して買ってもらう方では使いようがない。
Re: (スコア:0)
金を出す目的はベンチマークのスコアを上げることなのか
Re: (スコア:0)
そんな分野には普通インテルのコンパイラ使うだろ。
Re: (スコア:0)
コンパイラをGCCからClangに替えたって話を何勘違いしてるの?
OpenMP 対応まだー? (スコア:0)
うちの Mac の Xcode では、いまだ OpenMP が使えない。
単に、Xcode が使ってる Clang が対応してないだけなのかな?
Xcode が OpenMP に対応したら、gcc から移行するんだけどなぁ。
Re:OpenMP 対応まだー? (スコア:1)
まだClang本体にOpenMPはマージされてないですよ[1]。
[1] http://clang-omp.github.io/ [github.io]
割とどうでもいい (スコア:0)
GCC 4.6との比較なら、Clangのほうが良かったんだろうけど、
今のGCC 4.9と比較してClangの優位点はそんなにあるとは思えないんだよね、
C++11、C++14(全実装はGCC 5.0)は実装してしているし、テンプレート絡みのエラーメッセージはGCCのほうが解りやすい場合もあるから。
バイナリサイズが8%減少したって (スコア:0)
単に関数インライン化の判断のヒューリスティックが違うだけではないだろうか。
コンパイラオプションをいじるだけですぐに結果が変わりそう。
実行速度は代わり映えしなかったようで、まあそんなもんだよね、という結果。
>GCCをアップグレードするよりもClangに移行したほうが容易だと判断したという。
これもちょっとよくわからんね。
けっきょく、合理的な理由がある変更というより、新しいものを使いたかったのが本音ではなかろうか。いいと思います。
Re:バイナリサイズが8%減少したって (スコア:2)
コンパイル速度は体感できるほど違うので,両方でビルドできるようにしておいて,Windows以外でclang++使えるようにするのは普通に有用だと思いますよ
Re:バイナリサイズが8%減少したって (スコア:1)
C++のコンパイル時間の大半はヘッダファイルの解析時間と言われているので、
開発中のコンパイル時間を短縮するなら、コンパイラを変えるより。ccache [archlinux.org]で解析結果をキャッシュして再利用した方がいい。
Re:バイナリサイズが8%減少したって (スコア:1)
コンパイルが速いってだけで合理的な理由になるでしょ。
Re: (スコア:0)
実行速度の劣化なくバイナリサイズが縮小、ビルドも速い。
非常に合理的だと思いますが。
コンパイルオプションも双方最適なものを選んだ結果だと思うけどね。
コンパイラかえるようなところがコンパイルオプションを試してないとかありえないでしょ。
本当の理由 (スコア:0)
比較するとgccの方がGoogleが出しゃばってもデカイ顔しにくいから
ひっそり進行して気づいたら乗っ取る的なこともできる可能性が高い方を採っただけ
Re: (スコア:0)
clangはAppleがコントロールしているのだが。Blinkのように今後forkするほうがよほどありそうだ
Re: (スコア:0)
『充填された語』 [wikipedia.org]の例文みたいですね。
Re:技術者のオナニー (スコア:-1, オフトピック) (スコア:1)
意識して使ったわけではないですけど、単純にいいテクニックですね。
今後何かに使えそうですねw
# 本当にオフトピック
Re: (スコア:0)
Chromeが技術者のソレなら、このスレッドは何と呼べばいいのさ
Re: (スコア:0)
元コメ#2739737に関しては、まさに「利用者のソレ」ですね。
Re: (スコア:0)
スカスカの論拠で何かを延々こきおろしたい時にはうってつけですね。
Re: (スコア:0)
この短いセンテンスでも使えるテクニックだというのは蒙を啓かれた思いです
Re: (スコア:0)
中の方をどう改善しましたとかご託はいいからさっさとUIを改善しろと。
わかる。そう言いたくなるソフトたくさんあるから
つうわけでその内容、是非Operaにフィードバックしてやってくれ
もしかしたらそれが、Operaの差別化の種になるかもしれない。
Re: (スコア:0)
そんなものを独自開発できる余力があるならそもそもPrestoを捨ててないだろ。
# Operaがanti-POODLE record splittingを独自に実装したのにはほんとうに驚いたのでAC