§01
Umumiy ko'rinish
- Bu nima: Tadqiqotga yo'naltirilgan benchmark loyihasi. Bir xil "hello world" endpoint 4 ta stekda amalga oshirilgan, yuklama ostida (bombardier) ishga tushirilgan, RPS/latency/throughput hamda CPU/RAM o'lchangan. Natijalar
benchmark-results.md(xom raqamlar) vabenchmark-blog.html(jadval va grafikli sayqallangan post) fayllarida jamlangan. - Turi / holati / roli: other (benchmark/tajriba) / prototype (bir martalik ishga tushirish) / solo — foydalanuvchining sinov papkasi.
- Faol davri: ildizda git yo'q; fayllar ~2025-07-19 sanasi bilan belgilangan. Bir martalik tajriba, qo'llab-quvvatlanmaydi.
§02
Stek
- Tillar: TypeScript (Bun), C, Python.
- Sinovdan o'tayotgan freymvorklar (haqiqiy manbalardan):
- ElysiaJS on Bun (
bun_hello/index.ts) —/,/json,/echo,/healthroute'lari; kompilyatsiya qilingan va qilinmagan variantlarda sinaldi. - facil.io (C) (
c_hello/main.c+Makefile) — quyi darajali HTTP handler,path.len/strncmporqali qo'lda routing,http_mimetype_findorqali content-type,fio_start(.threads=4, .workers=2)bilan ishga tushirilgan;gcc -O3 -pthreadbilan build qilingan. - Django (
django_hello/, uv +.venv, o'zining.gitvadb.sqlite3fayllariga ega). - FastAPI + uvicorn (
fast/fastapi-hello-world/main.py) — async route'lar,PlainTextResponse/JSONResponse, Python ≥3.12, uv-lock. - O'lchov vositalari: bombardier (Go asosidagi yuklama generatori); maxsus CPU/RAM monitorlari —
monitor_performance.py(psutil:net_connectionsorqali portga ko'ra jarayonni topadi, CSV yozadi, o'rtacha/cho'qqi qiymatlarni hisoblaydi) vamonitor-performance.sh(bash:lsof -ti+ps/awk, CSV + xulosa).MONITORING_GUIDE.md6 ta monitoring yondashuvini sanaydi (psutil,time -l, docker stats, top/htop/pidstat, hyperfine/ab/wrk). - Infra/deploy: yo'q — lokal ishga tushirishlar.
- Ma'lumotlar: CSV metrik dumplar (
facilio-stats.csv, bo'sh),benchmark-results.md.
§03
Nima qilindi
Ildizda git tarixi yo'q — fayllardan qayta tiklandi.
- 4 ta namuna "hello world" server amalga oshirildi (har stek uchun bittadan), solishtirsa bo'ladigan javobga normallashtirilgan.
- 2 ta resurs-monitoring vositasi yozildi (Python + bash), o'rtacha/cho'qqi agregatsiyasi va CSV dumplar bilan.
- Bir qator bombardier ishga tushirishlari bajarildi: 125 conn × 1M so'rov (×2) va 125–300 conn × 2M so'rov; har stek uchun 3 tadan test, variatsiya bilan (± std).
- Natijalar ikki marta hujjatlashtirildi: texnik
benchmark-results.mdva prezentatsiya darajasidagibenchmark-blog.html("Web Framework Performance Benchmark — 2025", jadval hamda RPS/Latency/Throughput bloklari bilan). - Hajm: ~4 mini server + 2 skript + 2 hisobot. Ixcham, biroq nashrga yaroqli xulosaga ega tugallangan tajriba.
§04
Texnik chellenjlar
Faqat fayllar tasdiqlagan narsalar.
- Solishtirishning adolatliligi → barcha steklarda bir xil oddiy javob, yagona yuklama vositasi (bombardier), qat'iy konfiguratsiyalar (125/300 conn, 1–2M so'rov), har biri 3 martadan takror va σ bilan — "solishtirsa bo'ladigan tarzda qanday o'lchash kerak"ni tushunishni ko'rsatadi (
benchmark-results.md, blog "Test Methodology"). - Quyi darajali C server (
c_hello/main.c) → path uzunligi vastrncmporqali qo'lda routing, content-type'ni aniq belgilash, facil.io'ni ko'p oqimli/ko'p jarayonli ishga tushirish (.threads=4, .workers=2),-O3bilan build. C va freymvorklardan tashqaridagi tizim darajasidagi HTTP bilan erkin ishlashni ko'rsatadi. - Maxsus resurs monitoringi →
monitor_performance.pypsutil.net_connections()orqali port→PID xaritalaydi, CPU/RAM'ni ~sekundiga 1 marta o'lchaydi, o'rtacha/cho'qqi hisoblaydi, CSV yozadi; bash versiyasi bunilsof+ps+awkbilan bajaradi. Bu shunchaki "wrk ishlatildi" emas — jarayon ostida instrumentatsiya qilishdir. - Kutilmagan natija (asosiy topilma): ElysiaJS/Bun (~81.9k RPS, 1.52ms) C/facil.io'dan (~75.5k RPS, 2.41ms) o'zib ketdi — hello-world uchun RPS va latency bo'yicha; kompilyatsiya qilingan va qilinmagan Elysia amalda deyarli farq qilmadi. Python steki bir tartib darajasiga sekinroq: FastAPI ~8.8k, Django ~5.5k RPS (Django 1M da alohida ulanish xatolarini ham berdi). Kuchli narrativ ilgak.
§05
AI yordamida ishlab chiqish
- Topilgan sessiyalar: lokal Claude Code sessiyalari katalogida 0 ta. To'liq yo'lni normallashtirish orqali tekshirildi — bu repo uchun mos keladigan sessiya yo'q (faqat
deutsch-popper-benchga tegishli aloqasiz sessiya katalogi bor). - Bilvosita AI izlari: repoda lokal
.claude/settings.local.json(ildizda vac_hello,django_hello,fastkatalogchalarida) hamdabun_hello/CLAUDE.mdbor — ya'ni Claude Code/Cursor lokal ishlatilgan, biroq global sessiyalar omboridagi transkriptlar yo'q (ehtimol saqlanmagan/tozalangan). - AI-vorkflow patternlari: ma'lumot yo'q (transkriptlar yo'q).
§06
Yutuqlar va metrikalar
O'lchanadigan (benchmark-results.md / blogdan):
- 4 ta stek sinaldi, 5 ta konfiguratsiya (kompilyatsiya qilingan/qilinmagan Elysia bilan birga), har biri 3 martadan takror bilan.
- Yakuniy o'rtacha RPS: ElysiaJS ~81.9k (1.52ms) · facil.io ~75.5k (2.41ms) · FastAPI ~8.8k (14.1ms) · Django ~5.5k (22.9ms).
- Har ishga tushirishda 2M so'rovgacha, 300 tagacha bir vaqtli ulanish.
- 2 ta maxsus monitoring skripti (Python + bash) + 6 usulli qo'llanma.