blog icon indicating copy to clipboard operation
blog copied to clipboard

减小 Go 代码编译后的二进制体积 | Go 语言高性能编程 | 极客兔兔

Open geektutu opened this issue 3 years ago • 5 comments

https://geektutu.com/post/hpg-reduce-size.html

Go 语言/golang 高性能编程,Go 语言进阶教程,Go 语言高性能编程(high performance go)。介绍了 2 种方式(编译选项和 UPX 工具) 来减小 Go 代码编译后的二进制文件/可执行文件的体积/大小。

geektutu avatar Dec 08 '20 01:12 geektutu

使用的测试工程如下,该程序启动了一个 RPC 服务,引用了 log、net/http 和 net/log 三个 package。

net/log?

bestgopher avatar Dec 16 '20 08:12 bestgopher

@bestgopher net/rpc Git 仓已修复,网页一天后会自动刷新,左下角有 edit this page,可以直接修改的,感谢指出错误~

geektutu avatar Dec 16 '20 10:12 geektutu

是不是编译打包引入的 import 包全部都编译到二进制文件中了?(那些没有用到的方法也到编辑进去导致 1KB 的文件打包 6M 了的?) 比如我的 import 如下, main 就是使用了几个方法,编译的文件巨大。。。

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"strings"
	"time"
)

ghost avatar Sep 18 '23 03:09 ghost

是不是编译打包引入的 import 包全部都编译到二进制文件中了?(那些没有用到的方法也到编辑进去导致 1KB 的文件打包 6M 了的?) 比如我的 import 如下, main 就是使用了几个方法,编译的文件巨大。。。

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"strings"
	"time"
)

你可以只写一个空的main的应用程序,打包,对比下看看差距多少

比如打包

func main() {}

bestgopher avatar Sep 18 '23 03:09 bestgopher

@bestgopher

是不是编译打包引入的 import 包全部都编译到二进制文件中了?(那些没有用到的方法也到编辑进去导致 1KB 的文件打包 6M 了的?) 比如我的 import 如下, main 就是使用了几个方法,编译的文件巨大。。。

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"strings"
	"time"
)

你可以只写一个空的main的应用程序,打包,对比下看看差距多少

比如打包

func main() {}

func main() {} 编译出来也有 1.18M,都是再 Win10 环境下

ghost avatar Sep 18 '23 05:09 ghost