Go での関数のインライン化のためのコンパイラ ロジック
Go では、 C とは異なり、コンパイラがどの関数がインライン化に適しているかを自律的に判断します。潜在的なインライン化を観察するためのデバッグ オプションはありますが、Go コンパイラで使用される正確な基準に関するドキュメントは限られています。
インライン化の最適化
実行の必要性を考慮するデータセットを繰り返しループするので、コードを調べてみましょう以下:
func Encrypt(password []byte) ([]byte, error) { return bcrypt.GenerateFromPassword(password, 13) } for id, data := range someDataSet { newPassword, _ := Encrypt([]byte("generatedSomething")) data["password"] = newPassword someSaveCall(id, data) }
インライン化に関する考慮事項
コンパイラによる Encrypt 関数のインライン化を潜在的に修飾するには、次の点を考慮してください。
コンパイラ ロジック
Go コンパイラは、インライン化のために 2 つのパスを実行します。
インライン化の積極性は、「l」デバッグを使用して調整できます。 flag.
推奨事項
パフォーマンスが問題にならない限り、通常はコンパイラのデフォルトのインライン化動作に依存することをお勧めします。ただし、大幅なパフォーマンスの向上が必要な場合は、オーバーヘッドを最小限に抑えるために、頻繁に呼び出される小さい関数を手動でインライン化することを検討してください。
以上がGo コンパイラーは関数をインライン化するタイミングをどのように決定するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。