BT

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

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

原文(投稿日: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
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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