Go言語、実行時プロファイル情報による最適化「Profile-guided optimization」が正式機能に。Go 1.21リリース

2023年8月21日

Go言語の開発チームは8月8日にリリースしたGo 1.21で、実行時のプロファイル情報を用いてコンパイルを最適化し、実行速度の改善を図る「Profile-guided optimization」機能が正式版になったことを明らかにしました

fig

Go言語のコンパイルはソースコードの静的な解析を基にして高速なバイナリを生成するような最適化が行われています。

今回、正式機能となった「Profile-guided optimization」は、バイナリ実行時にどの関数が何度呼ばれたのか、メモリがどのように使用されたかなどのプロファイル情報を基にコンパイルを最適化することで、より高速なバイナリを生成する手法です。

具体的には、何度も呼ばれた関数をインライン展開することで関数呼び出しのオーバーヘッドをなくす、変数の使用頻度によってレジスタへの割り当てを変更する、ループを展開する、などの処理がコンパイル時に行われます。

これによりGo言語のバイナリの実行性能は2%から7%程度向上すると説明されています。

こうした実行時のプロファイル情報を基にしたコンパイルの最適化手法としては以前から存在しており、例えばRustにはすでにProfile-guided optimization機能がありますし、GoogleはChromeブラウザをProfile-guided optimizationによって15%程度高速化したことを2016年に明らかにしています

あわせて読みたい

プログラミング言語 Go




タグクラウド

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本