Bagaimana cara melihat bagian mana dari kode Anda yang paling sering dijalankan?

11

Saya ingin dapat melihat kode apa dalam ribuan baris kode sumber yang paling sering dijalankan dan memakan waktu paling lama. Tujuannya adalah untuk optimasi.

Mampu melihat bagian mana dari kode yang paling sering dijalankan adalah penting untuk optimasi, karena bagian-bagian itu adalah di mana saya harus fokus untuk mempercepat. Pada saat yang sama tentu saja, beberapa kode dijalankan sangat sering tetapi hampir tidak memerlukan waktu, jadi juga penting untuk dapat melihat kode apa yang paling lama.

Saya kira yang terbaik dari kedua dunia akan menjadi program yang menambahkan jumlah waktu yang dibutuhkan sepotong kode, termasuk SEMUA kali dijalankan (karenanya mencari tahu apa yang memperlambat kode Anda secara keseluruhan). Apakah ada semacam alat untuk ini?

dosaθ
sumber
Apakah Anda memiliki preferensi untuk sistem operasi atau bahasa pemrograman?
Mawg mengatakan mengembalikan Monica

Jawaban:

15

Apa yang Anda cari adalah membuat profil :

Dalam rekayasa perangkat lunak, pembuatan profil ("pembuatan profil program", "pembuatan profil perangkat lunak") adalah bentuk analisis program dinamis yang mengukur, misalnya, ruang (memori) atau kompleksitas waktu suatu program, penggunaan instruksi tertentu, atau frekuensi dan durasi panggilan fungsi. Penggunaan informasi profil yang paling umum adalah untuk membantu optimalisasi program.

Ada beberapa aplikasi semacam itu. Terkadang, ini dibangun ke dalam IDE itu sendiri. Ide netbeans adalah salah satu alat yang memiliki profiler bawaan . masukkan deskripsi gambar di sini

Alat lain seperti itu adalah visual vm .

masukkan deskripsi gambar di sini

Profiler dapat bekerja dengan cara yang berbeda - dan orang harus menyadari perbedaannya. Satu pendekatan adalah setiap detik untuk mengambil snapshot dari utas yang sedang berjalan dan melihat metode apa yang saat ini digunakan untuk setiap utas. Ini menggunakan contoh dari apa yang ada di luar sana.

Pendekatan lainnya adalah dengan menggunakan bytecode java untuk melaporkan kembali waktu mulai dan berhenti ke aplikasi lain.

Menulis profiler tidak terlalu sulit untuk satu java yang terampil. IBM memiliki artikel tentang cara menulis profiler Anda sendiri (dengan kode sumber!). Yang ini didasarkan pada Java Interactive Profiler .

Ada banyak profiler di luar sana - baik yang gratis maupun komersial (bagaimana dengan profiler yang terhubung untuk menjalankan instance JVM yang dapat melaporkan kembali kepada Anda (email atau pemberitahuan lainnya) ketika metode tertentu melebihi runtime yang diharapkan? Atau dihubungkan ke program yang melaporkan kembali ketika permintaan web terlalu lama - sudahkah profil historis untuk permintaan itu disimpan untuk diperiksa nanti?). Anda hanya perlu tahu apa yang Anda cari untuk mulai menemukan mereka dan pergi dari sana.

Setelah Anda mendapatkan profiler, Anda dapat menafsirkan hasil profiling .

Komunitas
sumber