BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Go言語1.10でツールチェーンとパフォーマンスが改善

Go言語1.10でツールチェーンとパフォーマンスが改善

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

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

Goの最新リリースには、言語レベルでの大きな変更は含まれていないが、ツールチェーン、Goランタイム、および標準ライブラリにいくつかの改良が加えられている。

Go 1.10における大きな改善点の1つは、ビルド結果のキャッシュと、より適切に期限切れのパッケージを検出することである。特に、Goでは、ファイルをいつ再コンパイルすべきかを決めるために、ファイル変更時間は関係なくなった。代わりに、コンパイルされたパッケージに格納されたファイル内容、ビルドフラグ、およびメタデータに基づいて決める。これにより、リビルドを強制するために使用された-aフラグが不要になった。ビルドされたパッケージのキャッシュは、特にビルドフラグやソースコードバージョンやブランチの間を行き来する場合に、ビルド時間をさらに向上させることを目的としている。

同様に、go testコマンドは現在、成功したテストのテスト結果をキャッシュする。go testでは、テスト実行ファイルとコマンドライン引数が以前のテスト実行で使用されたものと一致することが検出されるたびに、キャッシュされたテスト結果が出力される。

Go 1.10ランタイムでは、LockOSThreadUnlockOSThreadの呼び出しのネストを許可することで、Linuxネームスペースで安全に実施できることがわかった。つまり、以前のバージョンに影響を与えた障害なく、コンテナでもgoroutineを使えるようになった。

さらに、Goランタイムによって、より長いスパンにおいて、CPU使用率を小さくすることで実行時間を短縮すると、ガベージコレクションの割り当ての遅延が短縮された。これは、全体のCPU消費には影響を与えない。

最終的には、Goのパフォーマンスは、ガベージコレクタの改善、標準ライブラリの最適化、コード生成の改善によっても利益を得るはずである。

メジャーリリース番号が変更されないことが予想されるので、Goチームによると、Go 1.10は以前の1.xバージョンでコンパイルできるプログラムの大部分と互換性を維持する。

Go 1.10に加えられた変更の数はここで列挙するには多すぎるため、詳しくは公式のリリースノートを見逃さないでください。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT