Bosh sahifa Wiki Benchmark

Benchmark

Benchmark — dastur, algoritm, server, qurilma yoki tizimning unumdorligini oldindan belgilangan workload va metriclar asosida o‘lchash jarayoni. Benchmark natijasi turli implementation, version, konfiguratsiya yoki hardware’ni taqqoslash uchun ishlatiladi.

Benchmark oddiy “tez ishladi” kuzatuvidan farqli ravishda qayta bajariladigan sharoit, aniq o‘lchov va statistik tahlilga ega bo‘lishi kerak.

O‘lchanadigan ko‘rsatkichlar

Keng metriclar:

Bitta metric yaxshilanganda boshqasi yomonlashishi mumkin.

Latency

Bitta operation tugashiga ketgan vaqt.

Masalan:

API javobi: 42 ms

Faqat o‘rtacha latency yetarli emas. p50, p95 va p99 kabi percentile qiymatlar sekin requestlarni ko‘rsatadi.

User tajribasiga ko‘pincha tail latency kuchli ta’sir qiladi.

Throughput

Vaqt birligida bajarilgan operationlar soni.

Misollar:

Throughput oshishi har bir request latency’si past degani emas.

Workload

Benchmark real foydalanishga yaqin ish yukini ifodalashi kerak.

Workload:

bilan belgilanadi.

Faqat bitta sodda endpoint butun tizimni ifodalamaydi.

Microbenchmark

Juda kichik funksiya yoki operation o‘lchanadi.

Masalan:

Microbenchmark optimizatsiya uchun foydali, ammo productiondagi to‘liq oqimni ko‘rsatmaydi.

Macrobenchmark

Butun application yoki katta ssenariy o‘lchanadi.

Masalan:

U realroq, lekin xato sababini ajratish qiyinroq.

Warm-up

JIT compilation, cache va connection pool dastlabki operationlarni sekinlashtirishi mumkin.

Benchmark oldidan warm-up iterationlari bajariladi.

Cold-start va warm-state ikki alohida metric sifatida o‘lchanishi mumkin.

Ularni aralashtirish noto‘g‘ri xulosa beradi.

Cache

Cache natijani keskin o‘zgartiradi.

Holatlar:

Benchmark qaysi holatni o‘lchayotganini aniq yozadi.

Har run oldidan cache tozalash ham har doim real productionni ifodalamaydi.

Repetition

Bitta o‘lchov tasodifiy shovqinga juda sezgir.

Benchmark ko‘p iteration va bir nechta run bajaradi.

Natijalar:

  • median;
  • mean;
  • standard deviation;
  • confidence interval;
  • outlier

bilan ko‘rsatiladi.

Environment

Natijaga quyidagilar ta’sir qiladi:

Taqqoslanayotgan runlar imkon qadar bir xil environmentda bo‘ladi.

Thermal throttling

CPU yoki GPU qiziganda frequency pasayishi mumkin.

Uzun benchmarkning keyingi qismi sekinlashadi.

Device temperature, power mode va cooling qayd qilinadi.

Mobil qurilmada real user sharoiti alohida test qilinadi.

Compiler optimization

Release va debug buildlar keskin farq qiladi.

Compiler dead code’ni olib tashlashi yoki result ishlatilmasa butun operationni optimizatsiya qilishi mumkin.

Microbenchmark resulti haqiqatan ishlatilishi va compiler optimization hisobga olinishi kerak.

Concurrency

Load testda bir vaqtning o‘zida nechta client ishlashi belgilanadi.

Concurrency oshganda:

paydo bo‘ladi.

Tizimning maksimal throughput’i bilan barqaror ishlash nuqtasi bir xil bo‘lmasligi mumkin.

Baseline

Yangi version oldingi barqaror version yoki sodda implementation bilan solishtiriladi.

Benchmark maqsadi faqat eng katta raqam emas, regressiyani topish hamdir.

CI’da performance budgetdan oshsa build signal berishi mumkin.

Statistical significance

5% farq o‘lchov shovqini ichida bo‘lishi mumkin.

Ko‘p sample va variance farqning haqiqiyligini baholashga yordam beradi.

Faqat eng yaxshi runni tanlash cherry-picking hisoblanadi.

Profiling bilan farqi

Benchmark “qancha vaqt ketdi” degan savolga javob beradi.

Profiler esa vaqt qayerda sarflanganini ko‘rsatadi.

Benchmark sekinlashishni aniqlaydi, profiler sababini topishga yordam beradi.

Ikkalasi birga ishlatiladi.

Synthetic benchmark

Sun’iy workload controlled va qayta bajariladigan bo‘ladi.

Biroq production traffic diversity’sini to‘liq aks ettirmasligi mumkin.

Real trace yoki anonymized workload bilan tekshirish natijani kuchaytiradi.

Database benchmark

Database testida:

aniq ko‘rsatiladi.

Faqat bo‘sh jadvaldagi bitta query real workload emas.

Network benchmark

Bandwidth bilan birga latency, packet loss va jitter ham o‘lchanadi.

Localhost natijasi internet foydalanuvchisini ifodalamaydi.

Regionlar, TLS va payload compression hisobga olinadi.

Natijani taqdim etish

Benchmark report quyidagilarni saqlaydi:

  • source commit;
  • konfiguratsiya;
  • environment;
  • command;
  • data;
  • run soni;
  • raw natija;
  • summary;
  • cheklovlar.

Shunda boshqa developer natijani qayta tekshira oladi.

Benchmark xatosi

O‘lchanayotgan koddan tashqari setup, log yozish yoki data yaratish vaqtini natijaga qo‘shish mumkin. Timer aynan kerakli intervalni o‘lchaydi. Microbenchmarkda operation juda qisqa bo‘lsa timer resolutiondan kichik bo‘lishi mumkin; ko‘p takrorlab umumiy vaqt olinadi.

Cost metric

Cloud tizimda faqat tezlik emas, ming request yoki bitta job uchun sarf ham o‘lchanadi. Ikki baravar tez, ammo to‘rt baravar qimmat yechim har doim yaxshi emas. Cost, throughput va latency bitta reportda ko‘rsatiladi.

Regressiya chegarasi

CI’dagi kichik shovqin sabab har 1% farqda buildni yiqitish noto‘g‘ri. Historical variance asosida meaningful threshold tanlanadi.

Bog‘liq tushunchalar

Benchmarking, Performance testing, Latency, Throughput, Percentile, Microbenchmark, Load testing, Profiling, Baseline, Performance regression