
Windows版のChrome 64以降はClangでコンパイルされている 35
ストーリー by headless
移行 部門より
移行 部門より
Windows版Google Chromeでは、2月に安定版がリリースされたChrome 64以降でコンパイラーにClangが使われているそうだ(LLVM Project Blogの記事、
Ars Technicaの記事、
BetaNewsの記事、
Neowinの記事)。
Microsoft Visual C++(MSVC)からClangに移行する計画は数年前から進められており、MSVCビルドとClangビルドによるA/Bテストも実施していたそうだ。既に他のOS版はClangでコンパイルされているため、Windows版の移行によりClangへの移行が完了したことになる。ただし、ClangはVisual Studioに加えて使われるもので、置き換えるものではないという。現在もWindows版ChromeではMicrosoftのヘッダーやライブラリ、SDKバイナリを使用しているほか、Windows版Chromeの開発者の多くはVisual Studioを使用しているとのこと。
ClangとMSVCを比較すると、Clangによるビルドは15%遅くなるが、Clangのデバッグ情報出力方法は並列化可能であり、Gomaのような分散ビルドサービスを使用することでMSVCよりも高速になるそうだ。バイナリサイズは32ビットビルドでMSVCよりも大きくなる一方、64ビットビルドは小さくなる。パフォーマンスに関しては、Clangビルドが高速な場合とMSVCビルドが高速な場合があるものの、すべて5%程度の差に収まっているという。また、安定性の差異はみられないとのことだ。
Microsoft Visual C++(MSVC)からClangに移行する計画は数年前から進められており、MSVCビルドとClangビルドによるA/Bテストも実施していたそうだ。既に他のOS版はClangでコンパイルされているため、Windows版の移行によりClangへの移行が完了したことになる。ただし、ClangはVisual Studioに加えて使われるもので、置き換えるものではないという。現在もWindows版ChromeではMicrosoftのヘッダーやライブラリ、SDKバイナリを使用しているほか、Windows版Chromeの開発者の多くはVisual Studioを使用しているとのこと。
ClangとMSVCを比較すると、Clangによるビルドは15%遅くなるが、Clangのデバッグ情報出力方法は並列化可能であり、Gomaのような分散ビルドサービスを使用することでMSVCよりも高速になるそうだ。バイナリサイズは32ビットビルドでMSVCよりも大きくなる一方、64ビットビルドは小さくなる。パフォーマンスに関しては、Clangビルドが高速な場合とMSVCビルドが高速な場合があるものの、すべて5%程度の差に収まっているという。また、安定性の差異はみられないとのことだ。
MSVC++も結構すごいんだな (スコア:1)
GCCはLLVM/Clangに性能面・バイナリサイズで明確に負けていたと思うのだけど、MSVC++はトントンか。
Clangのインクリメンタルコンパイルはとてもすぐ入れているので、組み込み開発環境もLLVMに移行して欲しい。
Keilは選択出来るんだっけ。
Re:MSVC++も結構すごいんだな (スコア:2, 参考になる)
https://colfaxresearch.com/compiler-comparison/ [colfaxresearch.com]
なんでも思い込みはよくない。
Re: (スコア:0)
OpenMPを使った並列コードのテストなので、少々特殊な例ではないか。
Re: (スコア:0)
Compilation Speed が Clang より gcc の方が微妙に速い、ってのは意外だな。C++14 のコードをコンパイルした時に、Clang のコンパイル速度があまり速くない感じがしたけど、モノによっては遅いのか。
コンパイルされたコードの実行速度が Clang が遅いのは相変わらずだな。こんなに差が出るのは、OpenMP のせいかな。
Re: (スコア:0)
ARMじゃないけど、会社で使ってるルネサスのマイコンのコンパイラ(CC-RL, CC-RX)は、
LLVMの技術を使用しているってマニュアルに書いてあるよ。
Re: (スコア:0)
正直、gccよりclangの方がインターフェイスが優秀だから、もし性能まで上だったらgccを使う人は全滅してるだろうね。
Re: (スコア:0)
Linus 「おっ、そうだな」
むしろ (スコア:1)
MSVCだったのか、という思いが。
いや、OSSでもWindows上でのコンパイルはわりと使われるからそんなもんか
# node-gypでMSBuildTool要求されたりとか
M-FalconSky (暑いか寒い)
MSも本腰入れてClangに合流すればいいのになー (スコア:1)
$titleって思う。
最近のVisualStudioなら (スコア:1)
インストール時にClangというかLLVMもインストール出来るしな。
Re: (スコア:0)
昔から凄かったけど、今のVisualStudioは本当に凄い
Re: (スコア:0)
Clang/C2 の実験は終了しました。これ以上は更新されません。
https://twitter.com/stephantlavavej/status/871861920315211776 [twitter.com]
インテルコンパイラーは使ってないんだ (スコア:0)
性能を重視するならばインテルコンパイラーは当然の選択肢だと思ってたのですが、使っていないのは有料だからですか?
Re: (スコア:0)
AMDのCPUで性能劣化が顕著というまことしやかな俗説はよく聞く。
Re:インテルコンパイラーは使ってないんだ (スコア:1)
今は知らんが昔は拡張命令に対応してるかどうかを、フラグで返してるにもかかわらず、GenuineIntelじゃないと使わないようになっていた。
http://dualsocketworld.blog134.fc2.com/blog-entry-493.html?sp [fc2.com]
https://github.com/jimenezrick/patch-AuthenticAMD [github.com]
それに対応するパッチも検索したら結構見つかるね
Re:インテルコンパイラーは使ってないんだ (スコア:1)
これ、独禁法案件ではないかと
Re: (スコア:0)
https://en.m.wikipedia.org/wiki/Intel_C%2B%2B_Compiler#Criticism [wikipedia.org]
実際なってるけどね
Intelが自社の製品の為に作るソフトウェアに他社製品をサポートを強制させるわけにもいかないから、Intel製プロセッサ以外は最適化されないかもしれませんという文を公開して終わりみたい。
Re: (スコア:0)
サポートしないんだったら、いっそのこと、AMDのCPUでは一切動かないようにするんだったら分かります。
しかし、「動くけどわざと遅い」とするのは頂けません。
この対応で良しとするんだったら、IEはWindowsの一部ということで良かったのではないか、とすら思えてきます。
Re: (スコア:0)
EdgeがWindowsの一部でもとくに何も言われていないから当局も失敗を認めたのでしょう。
Re: (スコア:0)
というより、自社製品の方が相対的にノウハウがあるから最適化されてるって話では。
無理やりに性能を下げてるってなら知りたいところだが。
Re: (スコア:0)
アセンブラレベルで、実効に必要なクロック数戸賀が異なるから、特定の型式のCPUに特化した最適化をすると、他の型式では性能が劣化する。でもそれはメーカーが異なるというよりも製品の仕様が異なるからで、同じクロックの同じIntelのCPU同士でも性能は異なる。
Re: (スコア:0)
なんだかんだインテルとAMDのパソコン向けプロセッサは設計上の思想が異なるのでどっちかに最適化するとしなかった方で遅くなるんじゃないかな。
素人が思いつく範囲だとインテルは高IPC高クロックでコア数がやや多め。AMDは低IPC高クロックでコア数多め。
Re: (スコア:0)
あああとCPU内のキャッシュの持ち方がインテルとADMで違うのも大きいんでしょうね。
インテルが方向転換してそのへんは揃いそうな感じだが。
Re: (スコア:0)
AMDなんてシェア的に無視しても問題なさそうだし、アーキテクチャ特化が問題ならば、汎用性のあるマイルドな最適化にすれば良さそうに思いますが、そうすると速さがVC++並まで落ちてしまうのかな?
Re: (スコア:0)
オープンなChromiumの事もありますし
流石に有料コンパイラ使えないでしょ
Re: (スコア:0)
有料だっけ?IDEは有料版もあるけどさ
Re: (スコア:0)
core2 で動かす人もいるし
そんな古いCPUで動くようにすると違いがないのでは
分散ビルドって (スコア:0)
MSVCでも出来なかったっけ?
と思ったらIncrediBuildとの連携か。
Re: (スコア:0)
2005辺りかその辺からホストのCPUコアは全部使えるようになった。
他PCにも分散したいならIncrediBuildとかが必要。
# MSがXoreax買収してVSに組み込んでくれないかなあ。あとWholetomatoも。
Re: (スコア:0)
デフォルト無効で並列数をコンパイルオプションで指定というよくわからないインターフェースになってるけどね。
並列数なんてビルドする環境によって変えたいんだからコンパイルオプションではないだろと。
Re: (スコア:0)
VSでも分散してるのはコンパイラじゃないからコンパイルオプションではないわな。
Re: (スコア:0)
Azure とかに並列ビルドを展開してくれるような仕組みが欲しいんだよね。
金さえ払えば自動スケールするようなやつ。
Microsoftはコンパイラ開発捨てられませんしねえ (スコア:0)
Windowsアプリ開発者のために、いろいろ自作文法を追加する余地を残しておく必要がありますし。
C++/CXとか。
とするとコンパイラ開発の手は抜けませんし、
それなりに商品として大々的に押し出す必要はありますし。
少なくともMicrosoft自体は採用し続けざるを得ませんし、
他でもいろいろ使われ続ける必要がある。
今回移行されたとはいえ、実力的に大きく劣ったから、というわけではなかったようなのはよかったですね。
C++の最新規格の取り込みも最近は結構追いついてきているようですし。
Re: (スコア:0)
コードの最適化については知見がよく共有されていますが、コンパイル速度は各社の頑張りどころですね
Re: (スコア:0)
clangをフォークして自作文法を付け足す、という選択肢もあるんだから、「採用し続けるを得ない」と言い切れるほど絶対的な問題じゃないだろう。
ただ、clang全面移行はWindowsやOfficeのコードベースをそっくりclangに移植するという非常に重い作業が発生するので、コストとそれに見合うリターンを考えた上で、当面はVC++コンパイラの独自開発を続けた方が得という相対的な判断になっただけじゃないか。