Memfokuskan grafik flame
Saat menggunakan filter Focus, Anda memilih satu fungsi, dan grafik flame menampilkan jalur kode yang mengalir ke dalam dan ke luar fungsi tertentu tersebut. Grafik terfokus memungkinkan Anda melakukan dua tugas umum:
- Menganalisis konsumsi resource gabungan dari fungsi tertentu yang dipanggil dari beberapa tempat.
- Menganalisis proporsi waktu yang dihabiskan dalam suatu fungsi untuk pemanggil fungsi yang berbeda.
Misalnya, bagaimana cara menganalisis konsumsi resource di sekitar fungsi Sort
menggunakan grafik flame standar?
Di bagian berikutnya, kita akan memfokuskan grafik pada Sort
dan menjawab pertanyaan ini.
Grafik flame pada halaman ini dibuat dengan Mode warna
dan Bandingkan dengan yang ditetapkan ke nilai default,
masing-masing Name dan None.
Penjelasan grafik yang difokuskan
Grafik yang dibuat oleh filter Focus secara efektif membuat dua flame grafik untuk fungsi yang ditentukan dan menggabungkannya bersama:
Pada grafik sebelumnya, frame yang sesuai dengan fungsi Sort
berlebar penuh dan ditandai. Teks frame mencakup nama fungsi, persentase, dan jumlah profil yang digunakan untuk analisis. Dalam hal ini,
metrik menunjukkan bahwa fungsi Sort
, secara gabungan, menghabiskan
8,85% waktu CPU.
Paruh bagian bawah grafik sebelumnya memperlakukan fungsi Sort
sebagai titik awal dari grafik api standar dan menampilkan semua tujuan panggilannya.
Anda dapat membuat bagian ini dengan grafik flame standar menggunakan
filter Show from frame:
Paruh atas grafik menampilkan pemanggil Sort
dengan tujuan panggilan
tersembunyi. Anda dapat memperkirakan separuh bagian atas menggunakan serangkaian filter.
Mulai dengan menambahkan filter Tampilkan stack untuk Sort
. Selanjutnya, untuk setiap fungsi yang dipanggil oleh Sort
, tambahkan Sembunyikan stack atau Sembunyikan frame. Dalam situasi ini, Anda perlu menambahkan Sembunyikan stack untuk quickSort
guna menghilangkan fungsi
ini dan turunannya, lalu menambahkan Sembunyikan frame untuk Len
dan
maxDepth
:
Dengan menggunakan filter ini, perkiraan paruh atas grafik yang difokuskan
menunjukkan bahwa fungsi Sort
dijangkau melalui stack panggilan
yang berbeda. Namun, metrik tidak digabungkan sehingga grafik tidak menggambarkan keseluruhan konsumsi metrik oleh Sort
.
Grafik yang difokuskan sedikit berbeda dari grafik yang hanya menggabungkan dua perkiraan:
- Ada satu frame untuk fungsi fokus
Sort
. - Frame fungsi fokus ditandai, memiliki frame lebar penuh, dan menampilkan metrik yang merupakan agregasi dari semua stack panggilan.
- Ada beberapa stack panggilan, masing-masing diawali dengan frame
root
, sehingga Anda dapat melihat seluruh stack panggilan.
Memilih bingkai
Jika Anda memilih frame dalam grafik yang difokuskan, grafik flame akan digambar ulang dan stack panggilan frame tersebut ditampilkan secara lebih mendetail. Jika frame dijangkau melalui beberapa stack panggilan, setiap stack panggilan tersebut akan ditampilkan. Stack panggilan yang tidak menyertakan frame akan disembunyikan dari tampilan. Untuk memulihkan grafik ke status aslinya, pilih frame yang sesuai dengan fungsi fokus.
Pada contoh sebelumnya, Sort
dipanggil oleh (*byFreq).sort
dan oleh
(*byLiteral).sort
. Guna melihat stack panggilan untuk (*byLiteral).sort
secara lebih
mendetail, pilih frame tersebut.
Anda dapat memilih frame lain dan lebih mempersempit stack panggilan yang ditampilkan:
Untuk memulihkan grafik flame yang difokuskan ke keadaan aslinya, pilih frame yang
menampilkan nilai filter Focus. Dalam hal ini, pilih frame abu-abu
dengan label Sort
. Perhatikan bahwa untuk memulihkan grafik flame standar ke
status aslinya, Anda perlu memilih frame root.
Menganalisis grafik
Untuk menganalisis grafik flame yang terfokus, gunakan kontrol dan filter yang sama dengan yang digunakan untuk menganalisis grafik flame standar. Namun, ada perbedaan pada cara grafik berinteraksi dengan pointer:
Jika kursor diarahkan ke frame, tooltip akan menampilkan data metrik. Untuk grafik flame standar, data metrik total untuk frame ditampilkan. Untuk grafik flame terfokus, data metrik gabungan untuk fungsi ditampilkan.
Jika Anda memilih frame, grafik flame akan digambar ulang dan frame tersebut ditampilkan dengan lebar penuh. Untuk memulihkan grafik flame standar ke bentuk aslinya, Anda harus memilih frame paling atas. Untuk memulihkan grafik flame terfokus ke bentuk aslinya, Anda harus memilih frame yang menampilkan nilai filter fokus.
Untuk informasi tentang grafik yang difokuskan saat Anda membandingkan profil, lihat Memfokuskan perbandingan.
Menyetel filter fokus
Ada berbagai metode yang dapat Anda gunakan untuk menetapkan filter fokus, tetapi metode tersebut menghasilkan grafik yang sama.
Dengan menggunakan grafik
Tempatkan kursor Anda pada frame yang diinginkan, lalu klik Focus di
tooltip frame.
Fungsi fokus diekstrak dari frame.
Dalam contoh ini, grafik flame, yang diperluas di sekitar fungsi
(*huffmanBitWriter).write
, menampilkan tiga stack panggilan yang berbeda:
Dengan menggunakan daftar fokus
Untuk memfokuskan grafik api pada fungsi tertentu, lakukan hal berikut:
- Klik List list untuk membuka tabel Select focus function.
- Pilih nama fungsi dari tabel atau, untuk fungsi tertentu, klik Actions more_vert, lalu pilih Focus:
Jika fungsi yang Anda pilih dapat dipanggil melalui stack panggilan yang berbeda, setiap stack panggilan akan ditampilkan dalam grafik flame.
Anda dapat mengurutkan baris tabel dalam urutan arrow_upward menaik atau arrow_downward menurun dengan memilih elemen header tabel.
Setiap baris dalam tabel menampilkan nama fungsi dan statistik yang terkait dengan eksekusi fungsi.
Tabel ini menunjukkan bahwa fungsi (*compressor).deflate
memerlukan waktu 2,78 detik untuk dijalankan, dengan 1,8 detik dihabiskan dalam fungsi itu sendiri dan sisa waktu yang dihabiskan dalam stack panggilannya.
Satu kolom persentase melaporkan bahwa 57% dari total waktu eksekusi dihabiskan dalam fungsi (*compressor).deflate
. Kolom lain melaporkan bahwa 89% dari waktu, (*compressor).deflate
atau fungsi dalam stack panggilannya, sedang dieksekusi.
Terakhir, kolom jumlah melaporkan
bahwa ada tiga urutan yang memanggil fungsi (*compressor).deflate
.
Saat Anda membandingkan profil, konten daftar fokus akan berbeda. Untuk informasi selengkapnya, lihat Berfokus pada perbandingan.
Dengan menggunakan panel filter
Klik teks abu-abu Add profile data filter di panel
filter, lalu masukkan Focus:
dan string yang mengidentifikasi
fungsi yang akan difokuskan. Anda dapat menggunakan substring, termasuk awalan paket,
atau nama lengkap. Jika Anda memberikan string ambigu, fungsi yang paling cocok dengan string akan dipilih.
Jika mau, Anda dapat mengklik Filters, memilih Focus, lalu memasukkan string pengidentifikasi.
Jika fungsi yang Anda pilih dapat dipanggil melalui stack panggilan yang berbeda, setiap stack panggilan akan ditampilkan dalam grafik flame.
Menghapus filter fokus
Untuk menghapus filter fokus, klik Tutup close pada filter.