BT

Go 1.7に向けて、コンパイル時間の改善と高速なコードの生成

| 作者: Sergio De Simone フォローする 17 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2016年4月22日. 推定読書時間: 2 分 |

原文(投稿日:2016/04/21)へのリンク

Go 1.7に向けた開発サイクルの次のマイルストーンが近づく中、GoのコミッターであるDave Cheney氏が、リリースに向けたツールチェーンの改善に関するチームの取り組みについて報告した

現在の開発ステージを考えると、Go 1.7は少なくともGoの過去最高のリリースになるだろう、Cheney氏は語る。ツールチェーンの改善は、次の2つの領域に注力して行われている。

  • コンパイル時間とリンク時間
  • コード生成

コンパイル時間に関して、CからGoへのポート以来、Goコンパイラはパフォーマンス低下にさいなまれてきた。この問題については様々な議論があるが、Go 1.7に向けた最近の作業は、コンパイラが使うメモリ量の削減とリンク時間の改善が狙いだった。図にあるように、おかげで全体のコンパイル時間は、Go 1.5.3に対しておよそ20–30%削減されている。

見てわかるように、依然として、Go 1.4.3のコンパイラの方が現在の1.7よりも、大幅に優れている。しかし、新しいGoコンパイラには、全く新しいコード生成バックエンドが含まれており、パフォーマンスに関してまだ十分成熟していないことを考えると、現在の改善の重要性をその通りに理解すべきではない。

また、Goのブートストラップ化の判断は、パフォーマンスとは無関係であったことにも注意すべきだ。CではなくGoを使うことの利点は、開発にもたらされるものにあった。正しいコードの書きやすさ、デバッグのしやすさ、優れたツール、並列処理のサポートなどだ。実のところ、Goコンパイラのコードはスクラッチから書かれたものではなく、Cのコードから自動的に変換されたものだ。

先に述べたように、Go 1.7のもう一つの注力領域はコード生成だ。新しいバックエンドはSSA形式(静的単一代入形式)を使うよう移行した。これはLLVMなどのコンパイラがやっているのと同じで、生成されたコードに様々な最適化が可能になる。それにはデッドコード削除、レジスタアロケーション、スタックフレームアロケーションなどの改善が含まれる。Cheney氏が書いているように、Go 1.7の新しいSSAバックエンドは、この開発の初期段階において、最大20%高速なコードを生成している。さらに、Go 1.6と比べて小さなバイナリを生成し、多くの場合、Go 1.4と肩を並べている

 
 

Rate this Article

Relevance
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