종속성은 Go 실행 파일의 크기에 어떤 영향을 줍니까?

DDD
풀어 주다: 2024-11-17 03:31:03
원래의
404명이 탐색했습니다.

How Do Dependencies Affect the Size of a Go Executable?

Go 프로젝트의 크기 결정

자신의 패키지로 가져온 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿