Rumah > pembangunan bahagian belakang > Golang > Mengapa Mengukur Masa Pelaksanaan dengan Penangguhan Masuk Sentiasa Menghasilkan Sifar?

Mengapa Mengukur Masa Pelaksanaan dengan Penangguhan Masuk Sentiasa Menghasilkan Sifar?

Mary-Kate Olsen
Lepaskan: 2024-11-17 16:37:01
asal
419 orang telah melayarinya

Why Does Measuring Execution Time with Defer in Go Always Yield Zero?

Mengukur Masa Pelaksanaan dalam Go: Menyelesaikan Misteri Tangguh

Tunda penyataan menunggu penyiapan fungsi sebelum melaksanakan fungsi yang berkaitan. Walau bagaimanapun, mencetak masa pelaksanaan fungsi berikut menggunakan penangguhan sentiasa menghasilkan sifar:

func sum() {
    start := time.Now()

    // Expected non-zero value, but always gets 0
    defer fmt.Println(time.Now().Sub(start))

    sum := 0
    for i := 1; i < 101; i++ {
        sum += i
    }
    time.Sleep(1 * time.Second)
    fmt.Println(sum)
}
Salin selepas log masuk

Isu:
tunda menilai argumen fungsi tertunda apabila fungsi yang mengandungi menangguhkannya . Oleh itu, mula dinilai serta-merta, sebelum gelung atau tidur.

Penyelesaian:
Untuk mengukur masa berlalu dengan tepat, nilai masa.Now() di dalam fungsi tertunda:

defer func() { fmt.Println(time.Now().Sub(start)) }()
Salin selepas log masuk

Dengan berbuat demikian, perbezaan masa dikira apabila fungsi tertunda dilaksanakan, memastikan ketepatan hasil.

Petua: Pertimbangkan untuk menggunakan fungsi boleh guna semula untuk merangkum logik pemasaan untuk pengukuran yang lebih mudah dan konsisten.

Atas ialah kandungan terperinci Mengapa Mengukur Masa Pelaksanaan dengan Penangguhan Masuk Sentiasa Menghasilkan Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan