네트워크를 사용하는 프로그램을 작성할 때 CGO_ENABLED=0
으로 컴파일 속도가 상당히 느려질 수 있습니다. 예를 들어CGO_ENABLED = 0으로 컴파일하는 것이 왜 느린가요?
, 간단한 HTTP 서버 :
package main
import (
"flag"
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi! glad you requested %s.\n", r.URL.Path[1:])
}
func main() {
port := flag.Int("port", 9000, "")
flag.Parse()
http.HandleFunc("/", handler)
err := http.ListenAndServe(fmt.Sprintf(":%d", *port), nil)
if err != nil {
log.Fatal(err)
}
}
타이밍은 다음과 같습니다
% time go build
go build 0.46s user 0.06s system 131% cpu 0.396 total
% time CGO_ENABLED=0 go build
CGO_ENABLED=0 go build 3.93s user 0.15s system 143% cpu 2.849 total
지금까지 내가 CGO 처리하므로 C에 바인딩을 사용하지 않는
여부는 어떤 관련성이없는 것 같다 I '100 % 정적 바이너리를 컴파일하는 것이 좋지만 그러한 둔화가없는 경우는 아닙니다.
이러한 동작의 원인은 무엇입니까?
Btw는 1.10에서 캐시처럼 보이는데 많은 도움이 될 것이다. ... (''pkg /'를 완전히 없앨 미래 계획도있다.) –