如何检查围棋项目的规模? [英] How do I check the size of a Go project?
本文介绍了如何检查围棋项目的规模?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有简单的方法来检查Golang项目的规模?它不是可执行文件,而是我正在我自己的项目中导入的包。
推荐答案
您可以通过查看$GOPATH/pkg
目录(如果$GOPATH
未导出go
默认为$HOME/go
)来查看库二进制文件的大小。
gorilla
http pkg的大小。首先安装它们:
$ 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
编辑:
库(包)大小是一回事,但在链接阶段之后占用可执行文件的空间大小可能会有很大差异。这是因为包裹有它们自己的依赖项,并且随之而来的是额外的行李,但该行李可能被您导入的其他包裹共享。以下示例最能说明这一点:
清空。转到:
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 pkgnet/http
大大增加了可执行文件的大小。mux
pkg本身并不大,但它对net/http
pkg有导入依赖关系-因此它的文件大小也很大。然而,mux
和http
之间的增量只有20KB
,而mux.a库列出的文件大小是284KB
。因此,我们不能简单地将库pkg大小相加来确定它们的实际占用空间。
结论: Go链接器将在构建过程中从各个库中去掉许多包袱,但为了真正了解导入某些包的额外重量,还必须查看pkg的所有子依赖项。
这篇关于如何检查围棋项目的规模?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文