CGO_ENABLED=0으로 컴파일하면 속도가 느려지는 이유
C 바인딩을 사용하지 않음에도 불구하고 CGO_ENABLED=0으로 컴파일하면 컴파일 속도가 눈에 띄게 느려집니다. 그 원인을 이해하려면 작동 중인 메커니즘을 조사해야 합니다.
표준 라이브러리 패키지는 미리 결정된 컴파일 플래그를 사용하여 구축됩니다. CGO_ENABLED가 0으로 설정되면 빌드 플래그가 수정되어 사전 빌드된 패키지가 호환되지 않게 렌더링됩니다. 결과적으로 표준 라이브러리의 대부분을 다시 빌드해야 합니다.
"go build -i"를 사용하면 새 플래그로 빌드된 패키지를 설치할 수 있지만 문제가 완전히 해결되지는 않습니다. CGO_ENABLED=0으로 빌드된 패키지를 설치하면 동일한 플래그를 사용하는 향후 빌드가 가속화되지만, 플래그가 없는 빌드는 방해가 됩니다.
미리 빌드된 패키지의 기본 설치 방법은 모든 패키지가 동일한 플래그로 동일한 디렉토리에 저장되므로 비효율적입니다. 빌드 구성에 관계없이 이름이 지정됩니다. 다양한 플래그를 사용하여 빠른 빌드를 활성화하려면 "go build -i"를 "-installsuffix" 또는 "-pkgdir" 플래그와 결합해야 합니다. 각 컴파일 모드에 고유한 디렉터리를 할당하면 서로 다른 플래그를 사용하는 별도의 빌드를 원활하게 수용할 수 있습니다.
위 내용은 C 바인딩을 사용하지 않고도 CGO를 비활성화하면 컴파일 속도가 느려지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!