8.4.4 编译日志
编译器提供了参数来反馈编译过程中的各种优化:
-json string version,file for JSON compiler/optimizer detail output -m print optimization decisions
我们可以通过以上参数来查看编译器所做的各种优化,包括内联在内。将下列代码保存为 main.go:
package main
func C() {
println("C")
D()
}
func D() {
println("D")
C()
}
func main() {
C()
}通过命令 go tool compile -G=3 -m -json "0,file:///tmp/main.json" main.go 进行编译,可以看到如下输出:
文件 /tmp/main.json 也会包含相关信息。其中 -m 对应的数字越大,日志就越详细,例如我们通过命令 go tool compile -G=3 -m=2 -json "0,file:///tmp/main.json" main.go 编译时,得到的结果如下:
其中 -m -m 与 -m=2 效果一样,当 -m=4 时,日志还会打印出内联前后的 IR Tree 结构,读者可以自己尝试。
最后更新于
这有帮助吗?