Benchmark
- Node.js kursu
- Uzman
- Ders 40/47
- 5 dk
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.
Başlangıç kodu
// benchmarkLabel fonksiyonu yaz
// saniyedeki işlem sayısı 1000 ve üstüyse 'fast', 100 ve üstüyse 'medium', yoksa 'slow' döndürsün
// 1500 ve 50 çağrılarını yazdır
// buraya yazÖrnek çözüm
function benchmarkLabel(opsPerSec) {
if (opsPerSec >= 1000) return 'fast';
if (opsPerSec >= 100) return 'medium';
return 'slow';
}
console.log(benchmarkLabel(1500));
console.log(benchmarkLabel(50));Beklenen çıktı
fast slow
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 benchmarkLabel(1500) ne döndürür?
function benchmarkLabel(o) {
if (o >= 1000) return 'fast';
if (o >= 100) return 'medium';
return 'slow';
}
benchmarkLabel(1500)- medium
- fast Doğru cevap
- slow
- 1500
Açıklama: 1500 >= 1000 olduğundan 'fast' döner.
2 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
ops/sec |
Saniyedeki işlem |
warmup |
Isınma çağrısı |
fast |
1000 ve üstü |
slow |
100'ün altı |
3 Fast dalını tamamla
if (opsPerSec >= ____) return 'fast';
if (opsPerSec >= 1000) return 'fast';
Açıklama: fast için eşik 1000'dir.