CGO_ENABLED=0으로 셸 명령 컴파일: 성능 병목 현상
Go 프로그램에서 네트워크 작업을 활용하는 경우 컴파일 프로세스에서 상당한 시간이 걸릴 수 있습니다. CGO_ENABLED=0으로 속도가 느려집니다. 이 동작은 CGO_ENABLED=0이 없는 컴파일이 활성화된 경우보다 약 9배 더 오래 걸리는 기본 HTTP 서버와 같은 최소한의 프로그램에서도 관찰됩니다.
속도 저하의 근본 원인
이러한 속도 저하의 원인은 표준 라이브러리 패키지가 사용자 정의 플래그 없이 미리 빌드되어 있다는 사실에 있습니다. CGO_ENABLED가 0으로 설정되면 빌드 플래그가 변경됩니다. 결과적으로 사전 빌드된 패키지를 활용할 수 없으므로 대부분의 표준 라이브러리가 다시 컴파일됩니다. 이 프로세스는 사전 빌드된 패키지를 사용하는 것보다 훨씬 더 많은 시간이 소요됩니다.
속도 저하 완화
이 속도 저하를 완화하려면 go build -i 플래그를 사용할 수 있습니다. 사용된. 이 플래그는 수정된 플래그로 빌드된 패키지를 설치합니다. 그러나 이 솔루션은 CGO_ENABLED=0을 사용하여 후속 빌드 속도를 높이고 CGO_ENABLED=0을 사용하지 않으면 빌드 속도를 늦추기 때문에 효율성이 제한적입니다.
보다 효율적인 접근 방식은 -installsuffix 및 -pkgdir 플래그를 사용하여 패키지 설치를 위한 사용자 정의 디렉터리를 지정하는 것입니다. 다양한 깃발로 만들어졌습니다. 이를 통해 다양한 플래그를 사용하여 Go 프로그램을 빠르게 컴파일할 수 있습니다. 여러 컴파일 모드가 있는 환경에서 각 모드에는 자체적으로 지정된 디렉터리가 있어 모든 시나리오에 대한 효율적인 컴파일이 보장됩니다.
위 내용은 CGO_ENABLED=0이 네트워크 작업으로 Go 컴파일 속도를 늦추는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!