BT

ClangベースのキャッシュC++コンパイラのZapccがオープンソースとなった

| 作者: Sergio De Simone フォローする 14 人のフォロワー , 翻訳者 編集部T _ フォローする 0 人のフォロワー 投稿日 2018年7月5日. 推定読書時間: 2 分 |

原文(投稿日:2018/06/20)へのリンク

Zapccは、Clang/LLVMのフォークをベースにしたキャッシングC++コンパイラであり、再コンパイル時に最大50倍、フルビルド時に2倍から5倍高速であると言われている。Creempleによって開発され、2015年末に初リリースされたZapccは、現在オープンソースである。

Zapccコンパイルの高速化の背景にある重要なアイデアは、コンパイルサーバ(zapccs)を使用することである。コンパイルサーバ(zapccs)は、メモリ内にとどまり、クライアントからコンパイルコマンドを受け取る。 ZapccsはC++ヘッダファイルを1回だけ解析し、すべてのテンプレートのインスタンスと生成されたコードの両方をメモリに保持する。この点に関して、Zapccはプリコンパイル済みヘッダの強化版を使用していると見なすことができるが、実際にプリコンパイル済みヘッダをセットアップすることなくプリコンパイル済みヘッダよりも多くの情報をキャッシュできる

Zapccは、過度に複雑なC++ヘッダファイル、特にテンプレートを使用するヘッダファイルを処理する場合、Clangよりも高速である。そのため、Zapccがboost::mathをビルドするときにClangよりも40倍速く、WebKitの完全ビルドで4倍速く、Clangの完全ビルドで2倍速いことは驚くべきことではない。同様に、インクリメンタルな再コンパイルでは、ZapccはClangより最大で50倍速くなる。一方、ソースファイルがヘッダファイルよりも複雑な場合、Zapccのメリットを享受できない。プレーンなCプロジェクトはZapccの最悪のケースであり、アクセラレーションがまったくない。実際、ZapccはCファイルのキャッシュを使えない。

Zapccによって生成されたコードの実行時パフォーマンスは、Clangによって生成されたコードの実行時パフォーマンスと同じであると、Creemple氏は述べている。

zapccsによって使用されるメモリ量は、全体的なパフォーマンスを決定する重要な要素である。Zapccを使用すると、開発者はメモリ制限を設定して、その限界に達すると空のキャッシュで自動的にzapccsを再開させることができる。Zapccは利用可能なサーバインスタンスが見つからない場合に新しいサーバインスタンスを開始しようとし、開発者は-jフラグを使用して同時サーバの最大数を制御できる。プロジェクトの複雑さによるが、Zapccは実行するサーバ数が少なく、メモリの上限が高いと、実行速度が向上する。

中心となった開発者のYaron Keren氏によると、Zapccは大きく変更されたClangであり、200k以上の行が変更されている。そのため、いつの日にかCLangのベースラインにすることができると考えるのは非常に難しいことである。ZapccはClangとgccの当座の代替であり、すべてのビルドシステムとの統合を目指している。これは、Linux x64で完全にサポートされている。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT