Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah dan alatan ujian prestasi Golang

Kaedah dan alatan ujian prestasi Golang

PHPz
PHPzasal
2023-08-10 09:24:231437semak imbas

Kaedah dan alatan ujian prestasi Golang

Kaedah dan alatan ujian prestasi Golang

Pengenalan:
Dalam pembangunan perisian, ujian prestasi ialah pautan penting. Ujian prestasi membolehkan pembangun mengesahkan prestasi program dan mengenal pasti kesesakan prestasi yang berpotensi. Sebagai bahasa pengaturcaraan berprestasi tinggi, Golang turut menyediakan beberapa kaedah dan alatan untuk membantu pembangun menjalankan ujian prestasi. Artikel ini akan memperkenalkan beberapa kaedah dan alatan ujian prestasi yang biasa digunakan di Golang, dengan contoh kod.

1. Ujian penanda aras
Golang menyediakan rangka kerja penanda aras terbina dalam yang boleh menjalankan ujian prestasi dengan mudah. Semasa menulis kod ujian, kami menggunakan testing.B untuk mewakili objek ujian penanda aras dan menggunakan kaedah yang disediakan untuk menulis fungsi ujian.

Berikut ialah contoh penanda aras mudah:

package main

import (
    "fmt"
    "testing"
)

func BenchmarkFibonacci(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Fibonacci(10)
    }
}

func Fibonacci(n int) int {
    if n < 2 {
        return n
    }
    return Fibonacci(n-1) + Fibonacci(n-2)
}

func main() {
    fmt.Println("This is main function")
}

Dalam contoh di atas, kami mentakrifkan fungsi penanda arasFibonacci dan menggunakan gelung untuk memanggil fungsi Fibonacci beberapa kali untuk ujian prestasi. Apabila menjalankan penanda aras, kami menggunakan arahan go test untuk melaksanakan penanda aras:

go test -bench=.

Selepas melaksanakan penanda aras, kita boleh mendapatkan output yang serupa dengan yang berikut:

goos: windows
goarch: amd64
pkg: example
BenchmarkFibonacci-4         200000              8272 ns/op
PASS
ok      example     1.745s

Daripada output, kita dapat melihat bahawa penanda aras dijalankan 200000 kali, Dan purata masa setiap larian ialah 8272 nanosaat.

2. alat pprof
pprof ialah alat analisis prestasi yang biasa digunakan di Golang. Ia boleh membantu kami mencari kesesakan prestasi program. Kita boleh menggunakan pakej pprof dalam program untuk mengeluarkan data prestasi kepada fail, dan kemudian menggunakan alat pprof untuk menganalisis data.

Berikut ialah contoh kod untuk pprof:

package main

import (
    "fmt"
    "log"
    "net/http"
    "net/http/pprof"
)

func main() {
    go func() {
        log.Println(http.ListenAndServe("localhost:6060", nil))
    }()

    for i := 0; i < 1000000; i++ {
        fmt.Println("This is a loop")
    }
}

Dalam contoh di atas, kami mula-mula memulakan pelayan HTTP dan mengikat alat pprof ke localhost:6060. Kemudian dalam satu gelung, kami mengeluarkan log sejuta kali.

Selepas menjalankan program sampel, kita boleh melawati http://localhost:6060/debug/pprof/ dalam pelayar untuk melihat data prestasi. Melalui alat pprof, kita boleh melihat penggunaan CPU, penggunaan memori, dan lain-lain program untuk mencari kesesakan prestasi.

3. Alat Go-torch
Go-torch ialah alat yang boleh menggambarkan output data oleh pprof. Dengan menggunakan Go-torch, kita boleh melihat agihan masa CPU dalam program dan memaparkannya dalam bentuk carta. Ini boleh membantu kami menentukan di mana kesesakan prestasi adalah lebih intuitif.

Berikut ialah contoh kod menggunakan Go-torch:

package main

import (
    "log"
    "net/http"
    _ "net/http/pprof"
    "time"
)

func slowHandler() {
    time.Sleep(100 * time.Millisecond)
}

func main() {
    go func() {
        log.Println(http.ListenAndServe("localhost:6060", nil))
    }()

    for i := 0; i < 10; i++ {
        go slowHandler()
    }

    time.Sleep(1 * time.Minute)
}

Dalam contoh di atas, kami mentakrifkan fungsi slowHandler yang menyerupai operasi yang memakan masa. Kemudian kami memulakan pelayan HTTP, mengikat alat pprof ke localhost:6060, dan memulakan 10 goroutine menggunakan kata kunci go untuk melaksanakan fungsi slowHandler.

Selepas menjalankan program sampel, kami boleh menggunakan alat go-torch untuk menggambarkan output data oleh pprof untuk lebih memahami prestasi program.

Kesimpulan:
Di Golang, kita boleh menggunakan rangka kerja penanda aras terbina dalam untuk ujian prestasi, menggunakan alat pprof untuk analisis prestasi dan menggunakan alat go-torch untuk menggambarkan data prestasi. Alat dan kaedah ini boleh membantu kami lebih memahami prestasi program dan mengenal pasti kesesakan prestasi. Saya harap pengenalan dalam artikel ini dapat memberikan sedikit bantuan kepada pembangun Golang dalam ujian prestasi.

Atas ialah kandungan terperinci Kaedah dan alatan ujian prestasi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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