ホームページ >バックエンド開発 >Golang >Go で関数のインライン化を防ぐには?

Go で関数のインライン化を防ぐには?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-01 16:50:11441ブラウズ

How to Prevent Function Inlining in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。