Node.js
Benchmark
Benchmark yazma ve karşılaştırma öğrenirsin.
Benchmark nedir?
Bir benchmark, iki ya da daha fazla çözümü aynı iş yükü altında karşılaştırır. Node.js'te benchmark.js ya da tinybench gibi kütüphaneler bunu yapar; sonuç saniyedeki işlem sayısı (ops/sec) ile ölçülür.
Bir benchmarkLabel(opsPerSec) fonksiyonu bu sonucu etiketler: 1000 ve üstüyse 'fast', 100 ve üstüyse 'medium', yoksa 'slow' döndürür. Örnek: benchmarkLabel(1500) 'fast', benchmarkLabel(50) 'slow' döner. Bu, ham sayıyı üç kategoriye indirger. Gerçek benchmark araçları ısınma (warmup) ve istatistiksel dağılım da hesaplar; biz burada mantığı sadeleştiriyoruz. İki çözümü karşılaştırırken yalnızca ortalama değil, tutarlılık da önemlidir.
Isınma ve tutarlılık
Benchmark çalıştırırken ısınma (warmup) önemlidir. İlk birkaç çağrıda V8 henüz iyileştirme yapmamıştır; bu yüzden sonuç yavaş görünür. Isınma çağrıları atlandıktan sonra ölçüm başlar. Ayrıca tek bir ölçüm değil, birçok çalıştırmanın ortalaması ve dağılımı alınır.
Örnek: benchmarkLabel(1500) 'fast' döner; bu, ısınma sonrası ortalamanın yüksek olduğunu gösterir. benchmarkLabel(50) 'slow' dönerse, çözüm darboğazlı olabilir. Tutarsız sonuçlar (bir çalıştırmada 1500, diğerinde 50) genellikle çöp toplayıcı ya da sistem yükü kaynaklıdır. Bu yüzden benchmark sonuçlarını daima ısınma ve istatistiksel dağılımla yorumlamak gerekir.
Uygulama Benchmark etiket fonksiyonu yaz
function benchmarkLabel(opsPerSec) yaz. if (opsPerSec >= 1000) return 'fast';, if (opsPerSec >= 100) return 'medium'; ve return 'slow'; ekle. console.log(benchmarkLabel(1500)) ve console.log(benchmarkLabel(50)) yazdır.
Örnek çözümü göster
function benchmarkLabel(opsPerSec) {
if (opsPerSec >= 1000) return 'fast';
if (opsPerSec >= 100) return 'medium';
return 'slow';
}
console.log(benchmarkLabel(1500));
console.log(benchmarkLabel(50));
Kendini test et
-
benchmarkLabel(1500) ne döndürür?
function benchmarkLabel(o) {
if (o >= 1000) return 'fast';
if (o >= 100) return 'medium';
return 'slow';
}
benchmarkLabel(1500)
Cevabı göster
fast — 1500 >= 1000 olduğundan 'fast' döner.
-
Parçayı rolüne eşle
- ops/sec
- Saniyedeki işlem
- warmup
- Isınma çağrısı
- fast
- 1000 ve üstü
- slow
- 100'ün altı
-
Fast dalını tamamla
if (opsPerSec >= ____) return 'fast';
Cevabı göster
if (opsPerSec >= 1000) return 'fast';
Sıradaki ders: Production tuning