Go での関数のインライン化の防止
Go では、コンパイラーが関数をインライン化することでコードのパフォーマンスを自動的に最適化する場合があります。ただし、この動作を無効にしたい場合もあります。
質問:
特定の関数をインライン化しないように Go コンパイラーに指示するにはどうすればよいですか?
答え:
のインライン化を防ぐため特定の関数の場合は、//go:noinline プラグマを使用します:
//go:noinline func isPrime(p int) bool { // ... }
すべてのインライン展開を無効にするグローバル設定の場合は、-gcflags=-l フラグを使用します:
go build -gcflags=-l primes.go
これflag は、GCC の -O0 最適化レベルと同等であり、最適化されていないコードを生成します。
この手法の詳細については、Dave Cheney のブログ投稿「Mid-stack inlining in Go」を参照してください。
以上がGo で関数のインライン化を防ぐには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。