CodeBlanks Logo Icon CodeBlanks

Flame graph

Flame graph ve CPU profiling öğrenirsin.

Flame graph nedir?

Bir flame graph (alev grafiği), CPU profilleme sonucunu görselleştirir. Yatay eksen örnek sayısını, dikey eksen çağrı yığını derinliğini gösterir. Her fonksiyon bir dikdörtgenle çizilir; genişliği ne kadar çok zaman harcandığını gösterir.

Bir flameWidth(samples, total) fonksiyonu bu genişliği modeller: örnek sayısını toplam sayıya bölüp 100 ile çarpar ve yüzde olarak döndürür. Örnek: flameWidth(25, 100) '25%' döner. Math.round sonucu tam sayıya yuvarlar. Bu model, alev grafiğinin temel hesabını gösterir; gerçek araçlar (0x, clinic.js) binlerce örnekten tam grafik üretir ama her kutunun genişliği aynı formülle çıkar.

Yığın derinliği

Flame graph'ın dikey ekseni yığın derinliğidir (stack depth). Her satır bir çağrı çerçevesidir; üstteki alttakini çağırmıştır. Dar ve uzun bir kule, derin bir özyineleme ya da zincirleme çağrıya işaret eder.

Genişlik ise o çerçevenin ne kadar süre görüldüğüdür. flameWidth(25, 100) '25%' döner; bu, fonksiyonun toplam örneklerin dörtte birinde yığında görüldüğü anlamına gelir. Bir alev grafiği okurken önce en geniş kutuyu bulursun; bu, optimizasyon için en çok kazanç getirecek yerdir. Yığın derinliği o fonksiyona nasıl ulaşıldığını anlatır. Bu iki eksen birlikte darboğazı hem konum hem büyüklük olarak gösterir.

Uygulama Flame width fonksiyonu yaz

function flameWidth(samples, total) yaz. const pct = Math.round((samples / total) * 100) tanımla. return pct + '%' ile döndür. console.log(flameWidth(25, 100)) ve console.log(flameWidth(50, 100)) yazdır.

Başlangıç kodu

index.js
// flameWidth fonksiyonu yaz
// örnek sayısını toplam sayıya böl, 100 ile çarp, yuvarla ve yüzde olarak döndür
// 25 ve 100, 50 ve 100 çağrılarını yazdır
// buraya yaz

Örnek çözüm

index.js
function flameWidth(samples, total) {
  const pct = Math.round((samples / total) * 100);
  return pct + '%';
}
console.log(flameWidth(25, 100));
console.log(flameWidth(50, 100));

Beklenen çıktı

25%
50%

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Flame graph'te bir kutunun genişliği neyi gösterir?

index.js
flameWidth(25, 100)
  • Çağrı derinliğini
  • Bellek kullanımını
  • Harcanan zamanı (örnek sayısı) Doğru cevap
  • Disk gecikmesini

Açıklama: Genişlik harcanan zamanı, yani örnek sayısını gösterir.

2 Yüzde dönüşünü tamamla

Soru
return pct + '____';
Cevap
return pct + '%';

Açıklama: Yüzde işareti ile dize tamamlanır.

3 Parçayı rolüne eşle

Kavram Anlamı
samples Örnek sayısı
Math.round Yuvarlar
total Toplam örnek
'%' Yüzde işareti

Uzman bölümündeki tüm dersler