防止 Go 中的函数内联
在 Go 中,编译器可以通过内联函数自动优化代码性能。但是,在某些情况下您可能希望禁用此行为。
问题:
如何指示 Go 编译器不内联特定函数?
答案:
防止内联特定函数,使用 //go:noinline pragma:
//go:noinline func isPrime(p int) bool { // ... }
对于禁用所有内联的全局设置,请使用 -gcflags=-l 标志:
go build -gcflags=-l primes.go
此标志是相当于GCC中的-O0优化级别,生成未优化的代码,没有任何内联。
参考Dave Cheney 的博客文章“Go 中的中栈内联”了解有关此技术的更多详细信息。
以上是如何防止Go中的函数内联?的详细内容。更多信息请关注PHP中文网其他相关文章!