geektutu / blog

极客兔兔的博客,Coding Coding 创建有趣的开源项目。
https://geektutu.com
Apache License 2.0
166 stars 21 forks source link

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

Open geektutu opened 3 years ago

geektutu commented 3 years ago

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

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

bestgopher commented 3 years ago

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

net/log?

geektutu commented 3 years ago

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

ghost commented 9 months ago

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

import (
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"
    "time"
)
bestgopher commented 9 months ago

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

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

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

比如打包

func main() {}
ghost commented 9 months ago

@bestgopher

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

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

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

比如打包

func main() {}

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