Node.js
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.
Örnek çözümü göster
function flameWidth(samples, total) {
const pct = Math.round((samples / total) * 100);
return pct + '%';
}
console.log(flameWidth(25, 100));
console.log(flameWidth(50, 100));
Kendini test et
-
Flame graph'te bir kutunun genişliği neyi gösterir?
flameWidth(25, 100)
- Çağrı derinliğini
- Bellek kullanımını
- Harcanan zamanı (örnek sayısı)
- Disk gecikmesini
Cevabı göster
Harcanan zamanı (örnek sayısı) — Genişlik harcanan zamanı, yani örnek sayısını gösterir.
-
Yüzde dönüşünü tamamla
return pct + '____';
Cevabı göster
return pct + '%';
-
Parçayı rolüne eşle
- samples
- Örnek sayısı
- Math.round
- Yuvarlar
- total
- Toplam örnek
- '%'
- Yüzde işareti
Sıradaki ders: V8 flags