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:

  1. Menganalisis konsumsi resource gabungan dari fungsi tertentu yang dipanggil dari beberapa tempat.
  2. 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?

Mengurutkan fungsi dalam grafik flame.

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:

Grafik Flame untuk berfokus pada fungsi pengurutan.

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:

Bagian bawah grafik flame menunjukkan tujuan pengurutan.

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:

Bagian atas flame grafik yang menampilkan pemanggil pengurutan.

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:

Grafik Flame diperluas tentang pengurutan.

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:

Grafik Flame yang difokuskan pada frame kecil.

Dengan menggunakan daftar fokus

Untuk memfokuskan grafik api pada fungsi tertentu, lakukan hal berikut:

  1. Klik List untuk membuka tabel Select focus function.
  2. Pilih nama fungsi dari tabel atau, untuk fungsi tertentu, klik Actions , lalu pilih Focus:

Pilih tabel fungsi fokus.

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 menaik atau 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 pada filter.

Langkah selanjutnya