パスワードを忘れた? アカウント作成
13546127 story
Chrome

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%程度の差に収まっているという。また、安定性の差異はみられないとのことだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • GCCはLLVM/Clangに性能面・バイナリサイズで明確に負けていたと思うのだけど、MSVC++はトントンか。

    Clangのインクリメンタルコンパイルはとてもすぐ入れているので、組み込み開発環境もLLVMに移行して欲しい。
    Keilは選択出来るんだっけ。

    • by Anonymous Coward on 2018年03月10日 13時35分 (#3374171)

      https://colfaxresearch.com/compiler-comparison/ [colfaxresearch.com]
      なんでも思い込みはよくない。

      親コメント
      • by Anonymous Coward

        OpenMPを使った並列コードのテストなので、少々特殊な例ではないか。

      • by Anonymous Coward

        Compilation Speed が Clang より gcc の方が微妙に速い、ってのは意外だな。C++14 のコードをコンパイルした時に、Clang のコンパイル速度があまり速くない感じがしたけど、モノによっては遅いのか。
        コンパイルされたコードの実行速度が Clang が遅いのは相変わらずだな。こんなに差が出るのは、OpenMP のせいかな。

    • by Anonymous Coward

      ARMじゃないけど、会社で使ってるルネサスのマイコンのコンパイラ(CC-RL, CC-RX)は、
      LLVMの技術を使用しているってマニュアルに書いてあるよ。

    • by Anonymous Coward

      正直、gccよりclangの方がインターフェイスが優秀だから、もし性能まで上だったらgccを使う人は全滅してるだろうね。

      • by Anonymous Coward

        Linus 「おっ、そうだな」

  • MSVCだったのか、という思いが。

    いや、OSSでもWindows上でのコンパイルはわりと使われるからそんなもんか

    # node-gypでMSBuildTool要求されたりとか

    --
    M-FalconSky (暑いか寒い)
  • $titleって思う。

  • by Anonymous Coward on 2018年03月10日 15時39分 (#3374206)

    インストール時にClangというかLLVMもインストール出来るしな。

  • by Anonymous Coward on 2018年03月10日 11時46分 (#3374126)

    性能を重視するならばインテルコンパイラーは当然の選択肢だと思ってたのですが、使っていないのは有料だからですか?

    • by Anonymous Coward

      AMDのCPUで性能劣化が顕著というまことしやかな俗説はよく聞く。

      • by Anonymous Coward on 2018年03月10日 19時56分 (#3374276)

        今は知らんが昔は拡張命令に対応してるかどうかを、フラグで返してるにもかかわらず、GenuineIntelじゃないと使わないようになっていた。

        http://dualsocketworld.blog134.fc2.com/blog-entry-493.html?sp [fc2.com]

        https://github.com/jimenezrick/patch-AuthenticAMD [github.com]

        それに対応するパッチも検索したら結構見つかるね

        親コメント
        • by Anonymous Coward on 2018年03月10日 21時52分 (#3374317)

          これ、独禁法案件ではないかと

          親コメント
          • by Anonymous Coward

            https://en.m.wikipedia.org/wiki/Intel_C%2B%2B_Compiler#Criticism [wikipedia.org]
            実際なってるけどね
            Intelが自社の製品の為に作るソフトウェアに他社製品をサポートを強制させるわけにもいかないから、Intel製プロセッサ以外は最適化されないかもしれませんという文を公開して終わりみたい。

            • by Anonymous Coward

              サポートしないんだったら、いっそのこと、AMDのCPUでは一切動かないようにするんだったら分かります。
              しかし、「動くけどわざと遅い」とするのは頂けません。
              この対応で良しとするんだったら、IEはWindowsの一部ということで良かったのではないか、とすら思えてきます。

              • by Anonymous Coward

                EdgeがWindowsの一部でもとくに何も言われていないから当局も失敗を認めたのでしょう。

      • by Anonymous Coward

        というより、自社製品の方が相対的にノウハウがあるから最適化されてるって話では。
        無理やりに性能を下げてるってなら知りたいところだが。

        • by Anonymous Coward

          アセンブラレベルで、実効に必要なクロック数戸賀が異なるから、特定の型式のCPUに特化した最適化をすると、他の型式では性能が劣化する。でもそれはメーカーが異なるというよりも製品の仕様が異なるからで、同じクロックの同じIntelのCPU同士でも性能は異なる。

          • by Anonymous Coward

            なんだかんだインテルとAMDのパソコン向けプロセッサは設計上の思想が異なるのでどっちかに最適化するとしなかった方で遅くなるんじゃないかな。
            素人が思いつく範囲だとインテルは高IPC高クロックでコア数がやや多め。AMDは低IPC高クロックでコア数多め。

            • by Anonymous Coward

              あああとCPU内のキャッシュの持ち方がインテルとADMで違うのも大きいんでしょうね。
              インテルが方向転換してそのへんは揃いそうな感じだが。

            • by Anonymous Coward

              AMDなんてシェア的に無視しても問題なさそうだし、アーキテクチャ特化が問題ならば、汎用性のあるマイルドな最適化にすれば良さそうに思いますが、そうすると速さがVC++並まで落ちてしまうのかな?

    • by Anonymous Coward

      オープンなChromiumの事もありますし
      流石に有料コンパイラ使えないでしょ

      • by Anonymous Coward

        有料だっけ?IDEは有料版もあるけどさ

    • by Anonymous Coward

      core2 で動かす人もいるし
      そんな古いCPUで動くようにすると違いがないのでは

  • by Anonymous Coward on 2018年03月10日 13時29分 (#3374166)

    MSVCでも出来なかったっけ?
    と思ったらIncrediBuildとの連携か。

    • by Anonymous Coward

      2005辺りかその辺からホストのCPUコアは全部使えるようになった。
      他PCにも分散したいならIncrediBuildとかが必要。

      # MSがXoreax買収してVSに組み込んでくれないかなあ。あとWholetomatoも。

      • by Anonymous Coward

        デフォルト無効で並列数をコンパイルオプションで指定というよくわからないインターフェースになってるけどね。
        並列数なんてビルドする環境によって変えたいんだからコンパイルオプションではないだろと。

        • by Anonymous Coward

          VSでも分散してるのはコンパイラじゃないからコンパイルオプションではないわな。

      • by Anonymous Coward

        Azure とかに並列ビルドを展開してくれるような仕組みが欲しいんだよね。
        金さえ払えば自動スケールするようなやつ。

  • Windowsアプリ開発者のために、いろいろ自作文法を追加する余地を残しておく必要がありますし。
    C++/CXとか。

    とするとコンパイラ開発の手は抜けませんし、
    それなりに商品として大々的に押し出す必要はありますし。

    少なくともMicrosoft自体は採用し続けざるを得ませんし、
    他でもいろいろ使われ続ける必要がある。

    今回移行されたとはいえ、実力的に大きく劣ったから、というわけではなかったようなのはよかったですね。

    C++の最新規格の取り込みも最近は結構追いついてきているようですし。

    • by Anonymous Coward

      コードの最適化については知見がよく共有されていますが、コンパイル速度は各社の頑張りどころですね

    • by Anonymous Coward

      clangをフォークして自作文法を付け足す、という選択肢もあるんだから、「採用し続けるを得ない」と言い切れるほど絶対的な問題じゃないだろう。

      ただ、clang全面移行はWindowsやOfficeのコードベースをそっくりclangに移植するという非常に重い作業が発生するので、コストとそれに見合うリターンを考えた上で、当面はVC++コンパイラの独自開発を続けた方が得という相対的な判断になっただけじゃないか。

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...