プロファイルガイド付き最適化(PGO)機能などが追加された Go 1.20 がリリースされました

プロファイルガイド付き最適化(PGO)機能などが追加された Go 1.20 がリリースされました

Google が開発しているプログラミング言語 Go の最新版,Go 1.20 がリリースされました.1.19 から6ヶ月ぶりのリリースとなる Go 言語ですが,今回のアップデートでは,プロファイルガイド付き最適化(PGO; Profile Guided Optimizations) など,大きな機能が追加されています.

今回のアップデートでは,主にツールチェインやランタイム,ライブラリ実装が更新されています.主な更新内容は,以下の通りです.

  • Windows 7,8,それに Windows Server 2008,2012 のサポートは,今回のアップデートで最後になります.次回リリースとなる Go 1.21 以降では Windows 10 または Windows Server 2016 以降がサポート対象になります.
  • macOS 10.13 (High Sierra) と 10.14 (Mojave) のサポートは,今回のアップデートで最後になります.次回リリースとなる Go 1.21 以降では macOS 10.15 (Catalina) 以降がサポート対象になります.
  • RISC-V 版の FreeBSD のサポートが試験的に追加されました.
  • Core ライブラリの機能追加
    • crypto/ecdh パッケージを追加.明示的に ECDH (Elliptic Curve Diffie-Hellman key exchanges; 楕円曲線ディフィー・ヘルマン鍵共有)がサポートされました.
    • 異なる複数のエラーをひとまとまりに扱えるようになりました.[]error を返す Unwrap メソッドなどが利用できます.
    • その他,多くの機能追加と改善が行なわれています
  • ガベージコレクタ (GC; Garbage Collector) の時間・空間効率と CPU 効率が改善されました.
  • Linux 環境でリンカがリンク時に glibc と Musl の動的インタプリタを選択するようになりました.
  • Windows 環境で LLVM ベースのリンカがサポートされるようになりました.
  • プロファイルガイド付き最適化(PGO)機能がプレビューサポートされています.
  • ビルド関係のツールチェインで,"-cover" フラグがサポートされました.これは,実行時のカバレッジを計測するコードをサポートするためのフラグです.

上記にもある通り,今回のバージョンから,プロファイルガイド付きで最適化する(PGO)オプションが,プレビューサポートされるようになりました.

PGO というのは,実行モジュールを実際に動かして,実行時によく使われる命令やメモリ領域の統計をとり,その統計に基づいて実行モジュールを最適化する手法のことをいいます.一般的には,よく使われるメソッドをインライン展開(使われる場所に直接メソッドの内容を書き出すこと)したり,if-文でほとんど同じ分岐しかしない場合に,よく分岐する方のコードブロックを優先的に実行するように,順序付けて配置するような最適化を行います.

Go 言語でどのような PGO を行なっているかは,該当のドキュメントを参照しましょう.

最近のトピック

 

あまね工研は技術士事務所になりました

 

メモリ安全をめぐる C++ の仕様策定に外部要因が影響しているかもしれないとの話

 

2023年2月第2週のヘッドライン

 

人工知能にクレタ人のパラドックスをたずねてみる

 

任天堂が10%賃上げするとの報道があるも日本の労働法制事情も海外のギークに共有される

 

画像トラッキングのタスクを通じて機械学習システムの構築手法を学ぶ

 

2023年2月第1週のヘッドライン

 

Windows の実行モジュールを Linux などで動かせる Wine 8.1 が昨週に続き早くもリリースされました

 

プロファイルガイド付き最適化(PGO)機能などが追加された Go 1.20 がリリースされました

 

Google がサポートを中止した JPEG-XL について Mozilla は中立の立場を取ると宣言

 

ユーザの質問に5歳の子供でも分かる言葉で返してくれるチャットボット ELI5 を試してみる

 

Oracle Java SE の商用ライセンス変更でシステムの運用コストが大幅に増加する可能性

 

初心者のためのプログラミング言語ガイド

 

VSCode 拡張から入り込むセキュリティリスクにソフトウェア開発者はどう対応すべきか

 

Linux などで Windows の実行モジュールを実行できる Wine の最新版 Wine 8.0 がリリースされました

 

SO-DIMM に代わる新しいラップトップ用メモリ規格 CAMM を JEDEC が採用

 

2010年から続いていた GitHub の Subversion サポートが2024年1月8日に終了

 

Mastodonプロジェクトが開発者を募集中