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:
- latency;
- throughput;
- request soni;
- CPU sarfi;
- RAM sarfi;
- disk I/O;
- network bandwidth;
- startup vaqti;
- energy;
- cost.
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:
- request/second;
- transaction/second;
- frame/second;
- record/second;
- token/second.
Throughput oshishi har bir request latency’si past degani emas.
Workload
Benchmark real foydalanishga yaqin ish yukini ifodalashi kerak.
Workload:
- request turi;
- payload hajmi;
- read/write nisbati;
- concurrency;
- data hajmi;
- cache holati;
- user behavior
bilan belgilanadi.
Faqat bitta sodda endpoint butun tizimni ifodalamaydi.
Microbenchmark
Juda kichik funksiya yoki operation o‘lchanadi.
Masalan:
- string parsing;
- serialization;
- hash;
- memory allocation;
- bitta SQL query;
- bitta method.
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:
- CPU modeli;
- core soni;
- governor;
- RAM;
- storage;
- OS;
- kernel;
- runtime;
- compiler;
- background process;
- temperature.
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