Alat ini sedang dalam proses. Ini belum sepenuhnya siap produksi, tetapi Anda dapat mencobanya.
Perfguard adalah penganalisa statis go dengan penekanan pada kinerja.
Ini mendukung dua mode lari:
perfguard lint menemukan masalah potensial, berfungsi seperti analisis statis tradisionalperfguard optimize penggunaan profil cpu untuk meningkatkan presisi analisisFitur kunci perfguard:
perfguard optimize--fix (quickfixes)(*) Tidak mencoba memuat target analisis ke dalam memori sekaligus.
Berikut adalah beberapa contoh dari apa yang dapat dilakukan untuk Anda:
Instal Binary perfguard di bawah $(go env GOPATH)/bin :
$ go install -v github.com/quasilyte/go-perfguard/cmd/perfguard@latestDianjurkan agar Anda mengumpulkan profil CPU pada alur kerja yang realistis.
Untuk aplikasi CLI yang berumur pendek, ini bisa menjadi lari penuh. Untuk aplikasi yang sudah lama hidup, Anda mungkin ingin menyalakan profil selama satu menit atau lebih, lalu simpan ke file.
Profil yang diperoleh dari tolok ukur tidak representatif dan dapat menyebabkan hasil yang suboptimal.
Hot spot di profil mungkin muncul di tiga tempat utama:
Mengoptimalkan kode Anda sendiri sangat mudah. Jalankan perfguard pada akar proyek Anda:
$ perfguard optimize --heatmap cpu.out ./... Ini hanya akan menyarankan perbaikan ke kategori (2) .
Untuk mengoptimalkan kode dari (3) kami memiliki beberapa pilihan.
Opsi pertama lebih disukai. Anda dapat menggunakan profil CPU yang sama untuk mengoptimalkan perpustakaan. Jalankan perfguard di root kode sumber perpustakaan seperti yang Anda lakukan dengan aplikasi Anda.
Opsi kedua dapat bekerja untuk kasus ketika Anda ingin menggunakan biner yang dioptimalkan sementara tidak memiliki cara untuk memperbaiki dependensi menggunakan opsi pertama. Ikuti langkah -langkah ini:
# Make dependencies easily available for perfguard.
$ go mod vendor
# Run the analysis over the vendor.
# We use --fix argument to immediately apply the suggested changes.
$ perfguard optimize --heatmap cpu.out --fix ./vendor/...
# Build the optimized binary.
$ go build -o bin/app ./cmd/myapp Kemudian Anda dapat mengembalikan perubahan ke ./vendor atau menghapusnya jika Anda tidak menggunakan vendoring.