将优化标志传递给Go编译器?

exe*_*ook 11 go

要编译您键入的Go程序,是否go build myprogram.go可以传递优化标记,或者代码始终以相同的方式编译?我在谈论速度优化,代码大小优化或其他优化.

我知道如果你使用gccgo你只是通过-O2-O0但我的问题是关于官方Go编译器go.

fst*_*nis 12

如果您希望优化二进制大小,可以通过将-s和传递-wGo 链接器来省略符号表、调试信息和 DWARF 符号表:

$ go build -o mybinary -ldflags="-s -w" src.go
Run Code Online (Sandbox Code Playgroud)

来源博客文章,其中包括一些基准


jee*_*tkm 9

实际上没有明确的标志,这个Go wiki 页面列出了Go编译器完成的优化,并且在golang-nuts组中围绕这个主题进行了讨论.

您可以在Go gc编译器中关闭优化和内联以进行调试.

-gcflags '-N -l'
Run Code Online (Sandbox Code Playgroud)
  • -N :禁用优化
  • -l :禁用内联