BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Go 1.7リリース、コンパイラなどを改善

Go 1.7リリース、コンパイラなどを改善

原文(投稿日:2016/08/17)へのリンク

GoogleのエンジニアChris Broadfoot氏によると、Go 1.7はコンパイル時間とランタイム性能を大きく改善している。また階層的テストとベンチマークLinux on IBM z Systems (s390x)上のLinuxの公式サポートも追加する。

InfoQがレポートしたように、Go 1.7におけるコンパイラの改善は、主にSSA(静的単一代入)形式に基づくamd64プラットフォーム向けのGoの新しいコンパイラバックエンドに関係している。新しいバックエンドは多数の先進的な最適化のおかげで、よりコンパクトで高速なコードを生成する。最適化には境界チェックの削除共通式の削除が含まれる。Googleのベンチマークによると、ランタイムは5–35%高速になり、コンパイル時間とバイナリサイズは最大20–30%削減される。時としてベンチマークは大きく変わるかもしれないが、数名のHacker Newsユーザはビルド速度が2倍向上していると報告している

前述の通り、新しいSSAバックエンドはamd64プラットフォームでしか使えない。だがGoogleのエンジニアBrad Fitzpatrick氏によると、サポートする全アーキテクチャへの移植はGo 1.8の主目標の一つだという。そして、古いバックエンドを削除することで、フロントエンドはさらにシンプルになるはずだという(現在は能力の低いバックエンドを使っていて、たくさんの仕事をしなくてはならない)。これはさらなるパフォーマンス改善をもたらすだろう。2017年2月にリリース予定のGo 1.8に関する詳細は、GoLang Devフォーラムで見つかるだろう。

その他Go 1.7にもたらされた注目すべき変更として、サブテストとサブベンチマークがある。これは階層的なテストやテーブルによるベンチマークの定義を可能にする。-runおよび-benchフラグの引数に、スラッシュ区切りの正規表現のリストを指定すればよい。

go test -run Foo     # "Foo"にマッチするトップレベルのテストを実行
go test -run Foo/A=  # "A="にマッチするFooのサブテストを実行
go test -run /A=1    # "A=1"にマッチするトップレベルテストの全サブテストを実行

最後に、Go 1.7は標準ライブラリの一部としてcontextパッケージを採用した。これはネットワーキング時のキャンセル、タイムアウト、リクエストのスコープに限定したデータの受け渡しを簡単にする。またvendorディレクトリの使用も標準になった。これにより、GOPATHや標準ライブラリから自動的に引っ張ってくる代わりに、開発者は外部依存物のローカルコピーを使えるようになる。

Go 1.7における機能追加、改善、バグ修正の詳細については、リリースノートをチェックしよう。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT