如何检查围棋项目的规模? [英] How do I check the size of a Go project?

查看:19
本文介绍了如何检查围棋项目的规模?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有简单的方法来检查Golang项目的规模?它不是可执行文件,而是我正在我自己的项目中导入的包。

推荐答案

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

检查一些gorillahttp 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大大增加了可执行文件的大小。muxpkg本身并不大,但它对net/httppkg有导入依赖关系-因此它的文件大小也很大。然而,muxhttp之间的增量只有20KB,而mux.a库列出的文件大小是284KB。因此,我们不能简单地将库pkg大小相加来确定它们的实际占用空间。

结论: Go链接器将在构建过程中从各个库中去掉许多包袱,但为了真正了解导入某些包的额外重量,还必须查看pkg的所有子依赖项

这篇关于如何检查围棋项目的规模?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆