独自にインポートされたパッケージである Go プロジェクトのサイズを測定するには、そのフットプリントを評価する方法があります。
1 つの方法は、ライブラリ バイナリが存在する $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 の 3 つのプログラムを考えてみましょう。
// 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 import を追加するとサイズが劇的に増加しますが、mux.go で Gorilla/mux パッケージを使用してもわずかしか増加しません。
これは、mux パッケージが net/http パッケージに依存しており、その依存関係を継承しているためです。リンカはコンパイル中にこの追加の荷物の一部を削除する可能性がありますが、パッケージの実際のフットプリントを計算するのは簡単ではありません。
結論: パッケージのサブ依存関係を正確に評価するには、パッケージのサブ依存関係を特定することが重要です。実行可能ファイルのサイズに与える影響。パッケージ ライブラリのサイズを単に合計するだけでは、全体像を把握できません。
以上が依存関係は Go 実行可能ファイルのサイズにどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。