Event loop latency
- Node.js kursu
- İleri seviye
- Ders 14/83
- 5 dk
Event loop latency ve blokajı öğrenirsin.
Event loop latency
Olay döngüsü gecikmesi (event loop latency), olay döngüsünün bir türünü tamamlamasının ne kadar sürdüğüdür. Yüksek gecikme, olay döngüsünün tıkandığını gösterir; bu da isteklerin yavaşlamasına yol açar.
Ölçüm yöntemi: setTimeout(cb, 0) planlarsın; cb'nin ne zaman çağrıldığını ölçersin. Gecikme, cb'nin çağrılma zamanı ile planlanan zaman arasındaki farktır. Node.js 16+'da performance.eventLoopUtilization() da kullanışlıdır.
Latency ölçme kalıbı
Tipik bir latency ölçümü: const start = performance.now(); setTimeout(() => { const delay = performance.now() - start; }, 0);. Beklenen gecikme sıfıra yakındır; ama olay döngüsü meşgulse artar.
Bu kalıbı düzenli aralıklarla tekrarlayarak bir trend elde edersin. Gecikme sürekli yüksekse, CPU yoğun bir iş olay döngüsünü tıkıyor demektir. Çözüm: o işi bir işçi iş parçacığına taşımaktır.
Uygulama Geçen zamanı karşılaştır
performance'ı içe aktar. start değişkenine performance.now() ata. Kısa bir döngü çalıştır. performance.now() >= start sonucunu yaz.
Başlangıç kodu
// modülü içe aktar, zamanlayıcıyı al
// start değişkenine başlangıç zamanını ata
// kısa bir döngü çalıştır
// geçen zamanı karşılaştırÖrnek çözüm
const { performance } = require("perf_hooks");
const start = performance.now();
let sum = 0;
for (let i = 0; i < 100; i++) sum += i;
console.log(performance.now() >= start);Beklenen çıktı
true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Metod adını tamamla
const start = performance.____()
const start = performance.now()
Açıklama: performance.now() başlangıç zamanını verir.
2 Event loop latency neyi ölçer?
- Dosya boyutunu
- Olay döngüsünün gecikmesini Doğru cevap
- Ağ hızını
- Bellek kullanımını
Açıklama: Event loop latency olay döngüsünün gecikmesini ölçer.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
performance.now() |
Başlangıç zamanı |
latency |
Gecikme |
setTimeout |
Zamanlayıcı |
event loop |
Olay döngüsü |