gpt4 book ai didi

go - 如何查看 Go 项目的大小?

转载 作者:IT王子 更新时间:2023-10-29 01:51:48 32 4
gpt4 key购买 nike

有没有一种简单的方法可以检查 Golang 项目的大小?它不是可执行文件,而是我在自己的项目中导入的包。

最佳答案

您可以通过查看 $GOPATH/pkg 目录来查看库二进制文件有多大(如果 $GOPATH 未导出 go默认为 $HOME/go)。

所以要检查一些 gorilla http pkgs 的大小。首先安装它们:

$ go get -u github.com/gorilla/mux
$ go get -u github.com/gorilla/securecookie
$ go get -u github.com/gorilla/sessions

我的 64 位 MacOS (darwin_amd64) 上的 KB 二进制大小:

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

284 mux.a
128 securecookie.a
128 sessions.a

编辑:

库(包)大小是一回事,但在链接阶段后可执行文件中占用的空间大小可能会有很大差异。这是因为包有它们自己的依赖关系,随之而来的是额外的包袱,但这些包袱可能会被您导入的其他包共享。

一个例子最能说明这一点:

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() {}

所有 3 个程序在功能上都是相同的 - 执行零用户代码 - 但它们的依赖关系不同。以 KB 为单位的结果二进制大小:

$ du -k *

1028 empty
5812 http
5832 mux

这告诉我们什么?核心 go pkg net/http 显着增加了我们的可执行文件的大小。 mux pkg 本身并不大,但它对 net/http pkg 具有导入依赖性 - 因此它的文件大小也很大。然而 muxhttp 之间的差异仅为 20KB,而列出的 mux.a 库文件大小为 284KB。所以我们不能简单地添加库 pkg 大小来确定它们的真实足迹。

结论:go 链接器会在构建过程中从各个库中删除很多包袱,但为了真正了解导入某些包的额外重量,我们必须查看所有pkg 的子依赖项

关于go - 如何查看 Go 项目的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132462/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com