首页 > 后端开发 > Golang > 依赖关系如何影响 Go 可执行文件的大小?

依赖关系如何影响 Go 可执行文件的大小?

DDD
发布: 2024-11-17 03:31:03
原创
459 人浏览过

How Do Dependencies Affect the Size of a Go Executable?

确定 Go 项目的大小

要测量作为导入到您自己的包中的 Go 项目的大小,可以通过多种方法来评估其占用空间。 🎜>

一种方法是检查库二进制文件所在的 $GOPATH/pkg 目录。例如,安装 gorilla/mux、gorilla/securecookie 和 gorilla/sessions 包将在 $GOPATH/pkg/darwin_amd64/github.com/gorilla/ 目录中生成二进制大小。

$ cd $GOPATH/pkg/darwin_amd64/github.com/gorilla/
$ du -k *

284 mux.a
128 securecookie.a
128 sessions.a
登录后复制
但是,库大小并不是链接后对可执行文件大小影响的唯一指标。包内的依赖关系可能会引入额外的“包袱”,这些包袱可能会或可能不会被其他导入共享。

为了说明这种可变性,请考虑以下三个程序:empty.go、http.go 和 mux.go。

// empty.go
package main

func main() {}
登录后复制
// http.go
package main

import "net/http"

var _ = http.Serve

func main() {}
登录后复制
// mux.go
package main

import "github.com/gorilla/mux"

var _ = mux.NewRouter

func main() {}
登录后复制
尽管它们的功能等效,但它们的二进制大小差异很大:

$ du -k *

1028    empty
5812    http
5832    mux
登录后复制
http.go 中添加的 net/http 导入极大地增加了其二进制大小

这是因为 mux 包依赖于 net/http 包,所以它继承了它的依赖项。链接器可能会在编译过程中消除一些额外的负担,但计算包的真实占用空间并不简单。

结论:识别包的子依赖关系对于准确评估至关重要它对可执行文件大小的影响。简单地添加包库大小并不能提供完整的图片。

以上是依赖关系如何影响 Go 可执行文件的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板