자신의 패키지로 가져온 Go 프로젝트의 크기를 측정하기 위해 해당 공간을 평가하는 방법이 있습니다.
한 가지 방법은 라이브러리 바이너리가 있는 $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
그러나, 라이브러리 크기는 연결 후 실행 파일 크기에 미치는 영향을 나타내는 유일한 지표는 아닙니다. 패키지 내의 종속성으로 인해 다른 가져오기와 공유되거나 공유되지 않을 수 있는 추가 "수하물"이 발생할 수 있습니다.
이러한 가변성을 설명하기 위해 다음 세 가지 프로그램, 즉empt.go, http.go 및 mux.go를 고려하십시오.
// 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 가져오기를 추가하면 크기가 극적으로 늘어나는 반면, mux.go에서 gorilla/mux 패키지를 사용하면 크기가 약간만 늘어납니다.
이것은 mux 패키지가 net/http 패키지에 의존하므로 해당 패키지의 종속성을 상속받기 때문입니다. 링커는 컴파일 중에 이러한 추가 수하물 중 일부를 제거할 수 있지만 패키지의 실제 공간을 계산하는 것은 간단하지 않습니다.
결론: 패키지의 하위 종속성을 식별하는 것은 패키지를 정확하게 평가하는 데 중요합니다. 실행 파일 크기에 미치는 영향. 단순히 패키지 라이브러리 크기를 합산하는 것만으로는 완전한 그림을 얻을 수 없습니다.
위 내용은 종속성은 Go 실행 파일의 크기에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!