Tingkatkan kinerja program Go Anda menggunakan teknik pembuatan profil.
Profiling adalah teknik yang biasa digunakan dalam siklus pengembangan perangkat lunak untuk menganalisis kinerja a program, biasanya untuk perbandingan antar program atau untuk mengidentifikasi kemacetan dan bidang perbaikan untuk a program. Pembuatan profil melibatkan pengukuran dan analisis berbagai metrik seperti penggunaan memori, penggunaan CPU, waktu eksekusi, dan statistik tingkat sistem lainnya.
Profiling bertujuan untuk mengidentifikasi bagian-bagian dari program yang paling banyak menggunakan sumber daya sehingga dapat dioptimalkan untuk kinerja yang lebih baik. Pembuatan profil juga dapat membantu dalam proses debug, mengoptimalkan manajemen memori, dan penyetelan konkurensi.
Pembuatan profil di Go
Ada banyak alat untuk membuat profil di Go. Beberapa alat populer termasuk alat pemrofilan pprof bawaan Go dan paket pihak ketiga yang populer seperti paket Go Tool Trace dan Go-Torch.
Itu pprof paket adalah bagian dari
runtime kemasan. Itu pprof paket menyediakan fungsionalitas untuk menulis data profil runtime dalam format yang pprof alat visualisasi dapat menafsirkan.Inilah cara Anda dapat mengimpor file pprof paket ke dalam program Go Anda:
impor"pprof"
Go menyediakan beberapa perintah dan flag untuk bekerja dengan kode sumber. Jalankan yang berikut ini alat perintah untuk mengakses hasil profiling dalam berbagai format.
pergi alat pprof
Perintah menampilkan detail penggunaan tentang pprof memerintah.
Pembuatan Profil CPU di Go
Pembuatan profil CPU mengukur waktu yang dihabiskan program saat menjalankan fungsi. Pembuatan profil CPU berguna untuk mengidentifikasi bagian kode yang menghabiskan waktu CPU paling banyak.
Itu pprof package menyediakan fungsi untuk mengumpulkan profil CPU, memulai dan menghentikan pembuatan profil CPU, dan fungsi untuk menulis data profil ke file.
Berikut cara memulai dan menghentikan profil CPU dan menulis data ke file profil:
impor (
"os"
"runtime/pprof"
)fungsiutama() {
f, err := os. Membuat("cpu_profile.prof")
jika salah!= nol {
panik(berbuat salah)
}
menunda F. Menutup()err = pprof. MulaiProfilCPU (f)
jika salah!= nol {
panik(berbuat salah)
}
menunda pprof. HentikanProfilCPU()
// kode yang akan diprofilkan
}
Itu utama fungsi membuat file dan menutup aliran file dengan a menunda pernyataan dan Menutup fungsi contoh file. Itu MulaiCPUProfil fungsi memulai profil CPU dan menulis data ke file, dan HentikanCPUProfil menutup aliran profil dengan a menunda penyataan. Setelah memulai dan menghentikan profil CPU, Anda dapat melanjutkan untuk menulis kode yang ingin dianalisis.
Inilah hasil dari menjalankan pprof perintah dengan file profil dari program:
Menjalankan pprof perintah dengan file memulai shell interaktif yang memungkinkan Anda menjelajahi data profil. Anda dapat menggunakan perintah seperti atas Dan daftar untuk melihat fungsi yang membutuhkan waktu paling lama untuk dieksekusi.
Pembuatan Profil Memori di Go
Pembuatan profil memori adalah teknik yang digunakan untuk mengidentifikasi kebocoran memori dan penggunaan memori yang mahal dalam kode dengan mengukur penggunaan memori fungsi dalam kode.
Anda dapat memulai profil memori dengan WriteHeapProfile fungsi. Itu WriteHeapProfile fungsi mengambil contoh file dan menulis data profil ke file.
impor (
"os"
"runtime/pprof"
)fungsiutama() {
f, err := os. Membuat("mem_profile.prof")
jika salah!= nol {
panik(berbuat salah)
}
menunda F. Menutup()err = pprof. WriteHeapProfile (f)
jika salah!= nol {
panik(berbuat salah)
}
// kode yang akan diprofilkan
}
Itu utama fungsi membuat file profil, dan WriteHeapProfile fungsi mengambil contoh file sebagai argumen dan mengembalikan jenis kesalahan tulis setelah menulis ke file. Anda bisa lebih jauh menangani kesalahan sesuai dengan kebutuhan Anda.
Blokir Pembuatan Profil Dengan Go
Pemblokiran profil mengukur waktu tunggu program untuk primitif sinkronisasi, seperti mutex dan saluran. Pemblokiran profil berguna untuk mengidentifikasi bagian kode yang dapat menyebabkan pemblokiran.
Itu Lihatlah fungsi mengembalikan profil dengan nama string tertentu, dan WriteTo fungsi dari Lihatlah fungsi menulis snapshot profil berformat pprof ke file.
Inilah cara Anda menerapkan pemrofilan blok untuk program Go Anda:
impor (
"os"
"runtime/pprof"
)fungsiutama() {
f, err := os. Membuat("block_profile.prof")
jika salah!= nol {
panik(berbuat salah)
}
menunda F. Menutup()err = pprof. Lihatlah("memblokir").WriteTo (p, 0)
jika salah!= nol {
panik(berbuat salah)
}
// kode yang akan diprofilkan
}
Program membuat file untuk menyimpan data profil blok, mencari blok dengan Lihatlah fungsi, dan menulis data profil blok ke file.
Lacak Pembuatan Profil Dengan Go
Pembuatan profil jejak adalah teknik untuk mengukur eksekusi program, termasuk penjadwalan goroutine dan panggilan sistem. Pembuatan profil jejak berguna untuk mengidentifikasi hambatan kinerja dan memahami interaksi antara berbagai bagian program.
Itu jejak package menyediakan fungsi untuk pembuatan profil jejak. Paket ini juga merupakan bagian dari runtime kemasan.
impor (
"os"
"runtime/jejak"
)fungsiutama() {
f, err := os. Membuat("menelusuri")
jika salah!= nol {
panik(berbuat salah)
}
menunda F. Menutup()salah = jejak. Mulai (f)
jika salah!= nol {
panik(berbuat salah)
}
menunda jejak. Berhenti()
// kode yang akan diprofilkan
}
Program membuat file jejak untuk menyimpan data jejak, memulai pelacak dengan Awal fungsi yang mengambil contoh file dan mengembalikan jenis kesalahan, dan menangguhkan pelacak dengan Berhenti fungsi.
Go juga menyediakan alat untuk memformat kode sumber. Di samping alat pembuatan profil, Anda dapat menggunakan alat pemformatan untuk mempertahankan standar kode. Itu gofmt alat adalah alat pemformat bawaan yang dapat Anda gunakan untuk memformat kode sumber Go Anda berdasarkan aturan yang ditentukan untuk paket Anda.