有什么方法可以计算Go app的启动时间吗?

Is there any way to calculate the startup time of Go app?

我试图计算 Go 应用程序启动和接受请求所需的时间。 我尝试使用:

func main() {
    start:=time.Now()
    repo.CreateConnection()
    router := mux.NewRouter()
    r := bookController.Controller(router)
    fmt.Println("Starting server on the port 8080...")
    log.Fatal(http.ListenAndServe(":8080", r))
    fmt.Println(time.Since(start))
}

但是控制台只打印到 正在端口 8080 上启动服务器...

GOROOT=/usr/local/go #gosetup
GOPATH=/Users/admin/go #gosetup
/usr/local/go/bin/go build -o /private/var/folders/t3/1fk2w7y55qs1dfxbxbvpsn9h0000gp/T/___go_build_payments_go_performance go-performance #gosetup
/private/var/folders/t3/1fk2w7y55qs1dfxbxbvpsn9h0000gp/T/___go_build_go_performance
Successfully connected!
Starting server on the port 8080...

有没有办法显示正确的启动时间? 启动时间是指这个应用程序开始监听 8080 端口的时间。

最简单的,对于大多数情况应该足够好,是这样的:

package main

var start = time.Now()

/* place any other package variable declarations after `start` */

func main() {
    /* set up code */
    fmt.Printf("Startup took aprox %v\n", time.Since(start))
    log.Fatal(http.ListenAndServe(...))
}

这确保了 start 在您的程序执行过程中尽早初始化,在其他包级变量和任何 init 函数之前。然后作为启动服务器之前的最后一件事,它显示经过的时间。