Arxivga qaytish
III. Platforma, DevOps va xavfsizlikqo'shimchayakka

Hello-World benchmarklar (C / Bun / Django / FastAPI)

Shaxsiy benchmark tajribasi: C (facil.io), ElysiaJS/Bun, Django va FastAPI'da yozilgan "hello world" serverlarining o'tkazuvchanligini bombardier yuklamasi ostida solishtirish — nashrga tayyor blog posti va grafiklar bilan.

Holat
prototip
Davr
n/a
AI sessiyalar
Stek
Tillar
TypeScriptCPython
Freymvorklar · Infra
ElysiaJS (Bun)facil.ioDjangoFastAPI/uvicorn
§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) va benchmark-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, /health route'lari; kompilyatsiya qilingan va qilinmagan variantlarda sinaldi.
  • facil.io (C) (c_hello/main.c + Makefile) — quyi darajali HTTP handler, path.len/strncmp orqali qo'lda routing, http_mimetype_find orqali content-type, fio_start(.threads=4, .workers=2) bilan ishga tushirilgan; gcc -O3 -pthread bilan build qilingan.
  • Django (django_hello/, uv + .venv, o'zining .git va db.sqlite3 fayllariga 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_connections orqali portga ko'ra jarayonni topadi, CSV yozadi, o'rtacha/cho'qqi qiymatlarni hisoblaydi) va monitor-performance.sh (bash: lsof -ti + ps/awk, CSV + xulosa). MONITORING_GUIDE.md 6 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.md va prezentatsiya darajasidagi benchmark-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 va strncmp orqali qo'lda routing, content-type'ni aniq belgilash, facil.io'ni ko'p oqimli/ko'p jarayonli ishga tushirish (.threads=4, .workers=2), -O3 bilan build. C va freymvorklardan tashqaridagi tizim darajasidagi HTTP bilan erkin ishlashni ko'rsatadi.
  • Maxsus resurs monitoringimonitor_performance.py psutil.net_connections() orqali port→PID xaritalaydi, CPU/RAM'ni ~sekundiga 1 marta o'lchaydi, o'rtacha/cho'qqi hisoblaydi, CSV yozadi; bash versiyasi buni lsof+ps+awk bilan 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 va c_hello, django_hello, fast katalogchalarida) hamda bun_hello/CLAUDE.md bor — 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.
§07

Hissa qo'shganlar

git shortlog · barcha branchlar

  1. Boaz Segev2,866
  2. Jan Biedermann91
  3. WHR12
  4. Benjamin Calderon11
  5. Franz Brauße10
  6. Joey Hoek2
  7. Matthew Staveley-Taylor2
  8. 0xflotus1
  9. Ananda Umamil1
  10. Gnanesh1
  11. John W Higgins1
  12. Max Schrementi1
20 hissador· yana +8 ko'rsatilmadijami 3007 ta kommit
Hozirda

Senior / Staff muhandis rollari va tanlab olingan frilansga ochiqman — prodakshn AI, platforma va full-stack ishlar.

Bog'lanish