Как проверить размер проекта Golang? - PullRequest
1 голос
/ 13 марта 2019

Есть ли простой способ проверить размер проекта Golang?Это не исполняемый файл, это пакет, который я импортирую в свой собственный проект.

1 Ответ

5 голосов
/ 13 марта 2019

Вы можете увидеть, насколько большими являются двоичные файлы библиотеки, посмотрев в каталог $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):

$ 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 - отсюда и значительный размер файла для него.Тем не менее, разница между mux и http составляет всего 20KB, тогда как указанный размер файла библиотеки mux.a составляет 284KB.Поэтому мы не можем просто добавить размеры библиотек pkg, чтобы определить их истинную площадь.

Вывод: В процессе сборки компоновщик go будет отбирать много багажа из отдельных библиотек, ноЧтобы получить истинное представление о том, сколько вес импортирует определенные пакеты, нужно взглянуть также на все под-зависимости pkg .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...