§01
Обзор
- Что это: Исследовательский бенчмарк-проект. Один и тот же эндпоинт «hello world» реализован на 4 стеках, прогнан под нагрузкой (bombardier), с замерами RPS/latency/throughput + CPU/RAM. Результаты сведены в
benchmark-results.md(сырые цифры) иbenchmark-blog.html(вылизанный пост с таблицами/графиками). - Тип / статус / роль: other (бенчмарк/эксперимент) / prototype (разовый прогон) / solo — песочница пользователя.
- Активный период: git в корне нет; файлы датированы ~2025-07-19. Разовый эксперимент, не поддерживается.
§02
Стек
- Языки: TypeScript (Bun), C, Python.
- Фреймворки под тестом (из реальных исходников):
- ElysiaJS на Bun (
bun_hello/index.ts) — роуты/,/json,/echo,/health; тестировался в скомпилированном и нескомпилированном вариантах. - facil.io (C) (
c_hello/main.c+Makefile) — низкоуровневый HTTP-обработчик с ручным роутингом поpath.len/strncmp, content-type черезhttp_mimetype_find, запуск черезfio_start(.threads=4, .workers=2); сборкаgcc -O3 -pthread. - Django (
django_hello/, uv +.venv, со своим.gitиdb.sqlite3). - FastAPI + uvicorn (
fast/fastapi-hello-world/main.py) — async-роуты,PlainTextResponse/JSONResponse, Python ≥3.12, uv-lock. - Инструменты замеров: bombardier (генератор нагрузки на Go); собственные мониторы CPU/RAM —
monitor_performance.py(psutil: находит процесс по порту черезnet_connections, пишет CSV, считает avg/peak) иmonitor-performance.sh(bash:lsof -ti+ps/awk, CSV + summary).MONITORING_GUIDE.mdперечисляет 6 подходов к мониторингу (psutil,time -l, docker stats, top/htop/pidstat, hyperfine/ab/wrk). - Инфра/деплой: нет — локальные прогоны.
- Данные: CSV-дампы метрик (
facilio-stats.csv, пустой),benchmark-results.md.
§03
Что реализовано
Истории git в корне нет — реконструировано по файлам.
- Реализовано 4 эталонных «hello world» сервера (по одному на стек), нормализованных до сопоставимого ответа.
- Написано 2 инструмента мониторинга ресурсов (Python + bash) с агрегацией avg/peak и CSV-дампами.
- Проведена серия прогонов bombardier: 125 conn × 1M запросов (×2) и 125–300 conn × 2M запросов; по 3 теста на стек с разбросом (± std).
- Результаты задокументированы дважды: технический
benchmark-results.mdи презентационныйbenchmark-blog.html(«Web Framework Performance Benchmark — 2025», с таблицей и блоками RPS/Latency/Throughput). - Объём: ~4 мини-сервера + 2 скрипта + 2 отчёта. Компактный, но завершённый эксперимент с публикабельным выводом.
§04
Технические челленджи
Только то, что подтверждают файлы.
- Честность сравнения → один и тот же тривиальный ответ на всех стеках, единый инструмент нагрузки (bombardier), фиксированные конфигурации (125/300 conn, 1–2M запросов), по 3 повтора с указанием σ — показывает понимание «как мерить, чтобы было сопоставимо» (
benchmark-results.md, блог «Test Methodology»). - Низкоуровневый C-сервер (
c_hello/main.c) → ручной роутинг по длине пути иstrncmp, явная установка content-type, много-поточный/много-процессный запуск facil.io (.threads=4, .workers=2), сборка с-O3. Показывает уверенность в C и системном HTTP вне фреймворков. - Собственный мониторинг ресурсов →
monitor_performance.pyмапит порт→PID черезpsutil.net_connections(), семплит CPU/RAM ~1/с, считает avg/peak, пишет CSV; bash-версия делает то же черезlsof+ps+awk. Это не просто «запустил wrk» — это инструментирование под процессом. - Контринтуитивный результат (главный вывод): ElysiaJS/Bun (~81.9k RPS, 1.52ms) обошёл C/facil.io (~75.5k RPS, 2.41ms) по RPS и latency на hello-world; скомпилированный и нескомпилированный Elysia дали практически одинаковый результат. Python-стек медленнее на порядок: FastAPI ~8.8k, Django ~5.5k RPS (Django к тому же выдал единичные connection errors на 1M). Сильный нарративный хук.
§05
AI-разработка
- Найдено сессий: 0 в локальной директории сессий Claude Code. Проверено через нормализацию полных путей — совпадений для этого репозитория нет (только несвязанная директория сессий, принадлежащая
deutsch-popper-bench). - Косвенные следы AI: в репозитории есть локальные
.claude/settings.local.json(в корне и в подкаталогахc_hello,django_hello,fast) иbun_hello/CLAUDE.md— то есть Claude Code/Cursor локально использовался, но транскриптов сессий в глобальном хранилище нет (вероятно, не сохранены/подчищены). - Паттерны AI-воркфлоу: данных нет (нет транскриптов).
§06
Достижения и метрики
Измеримое (из benchmark-results.md / блога):
- Протестировано 4 стека, 5 конфигураций (включая compiled/non-compiled Elysia), по 3 повтора каждая.
- Итоговый средний RPS: ElysiaJS ~81.9k (1.52ms) · facil.io ~75.5k (2.41ms) · FastAPI ~8.8k (14.1ms) · Django ~5.5k (22.9ms).
- До 2M запросов на прогон, до 300 одновременных соединений.
- 2 собственных скрипта мониторинга (Python + bash) + гайд с 6 методами.