{"id":28350140,"url":"https://github.com/drarox/backend-benchmark","last_synced_at":"2026-04-21T03:31:15.379Z","repository":{"id":294917992,"uuid":"987840127","full_name":"Drarox/Backend-Benchmark","owner":"Drarox","description":"A fully automated benchmarking suite comparing popular backend frameworks.","archived":false,"fork":false,"pushed_at":"2025-10-17T14:42:20.000Z","size":330,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-18T17:20:33.885Z","etag":null,"topics":["backend","benchmark","bun","deno","go","nodejs","python"],"latest_commit_sha":null,"homepage":"","language":"Blade","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Drarox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-21T17:00:41.000Z","updated_at":"2025-10-17T14:42:24.000Z","dependencies_parsed_at":"2025-05-22T18:06:36.339Z","dependency_job_id":"ba03450d-8fde-4305-a0f8-c6ff5f5aaea0","html_url":"https://github.com/Drarox/Backend-Benchmark","commit_stats":null,"previous_names":["drarox/backend-benchmark"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Drarox/Backend-Benchmark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drarox%2FBackend-Benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drarox%2FBackend-Benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drarox%2FBackend-Benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drarox%2FBackend-Benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Drarox","download_url":"https://codeload.github.com/Drarox/Backend-Benchmark/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Drarox%2FBackend-Benchmark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32075214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T02:38:07.213Z","status":"ssl_error","status_checked_at":"2026-04-21T02:38:06.559Z","response_time":128,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","benchmark","bun","deno","go","nodejs","python"],"created_at":"2025-05-27T21:10:30.280Z","updated_at":"2026-04-21T03:31:15.374Z","avatar_url":"https://github.com/Drarox.png","language":"Blade","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Backend Benchmark\n\nA fully automated benchmarking suite comparing popular backend frameworks (Python, Go, Node, etc.). It measures performance on a consistent JSON-processing route and outputs a standalone HTML dashboard with visual results.\n\n## ⚡ What It Does\n\n* Benchmarks dozens of frameworks across languages\n* Measures Requests/sec, Latency, Transfer/sec\n* Generates a zero-dependency HTML dashboard with charts + system info (`results_dashboard.html`)\n\n## 📦 Frameworks Covered\n\n- **Python**: Flask (with Gunicorn), FastAPI (with Uvicorn), Django (with Uvicorn + Gunicorn)\n- **JavaScript Runtimes**:\n  - **Node**: Node (native), Express, Fastify, NestJS (Express), NestJS (Fastify), Koa\n  - **Bun**: Bun (native), Express, Hono, Elysia\n  - **Deno**: Deno (native), Express, Hono\n- **Go**: Gin, Echo, Fiber, Native `net/http`\n- **PHP**: Lavarel (with FrankenPHP)\n- **Java**: Spring Boot\n- **C#**: ASP.NET Core\n- **Ruby**: Ruby on Rails \n\n## 🔬 Benchmark Scenario\n\n### Route: `POST /process`\n- Input JSON: `{ \"numbers\": [1, 2, 3, 4, 5] }`\n- Task: Compute the sum of squares of the numbers\n- Output JSON: `{ \"result\": 55 }`\n\nEach framework is tested using:\n\n```bash\nwrk -t\"$CORES\" -c1000 -d60s -s post.lua http://localhost:3000/process\n```\n\n## 📁 Project Structure\n\n```\nbackend-benchmark/\n├── \u003cframework\u003e/         # One folder per framework\n│   └── install.sh       # Install dependencies of the framework (optional)\n│   └── start.sh         # Starts that framework's server\n├── results/             # Results ouput folder\n│   └── raw/             # Raw wrk output per framework\n│   └── results_summary.csv  # Parsed performance data\n│   └── results_dashboard.html  # Interactive HTML report\n├── post.lua             # wrk load script\n├── benchmark_presetup.sh  # Install all dependencies\n├── benchmark_runner.sh  # Run benchmarks\n└── parse_html.py        # Parses wrk results into charts\n```\n\n## 🔧 Prerequisites\n\nInstall the following tools:\n\n* [Python 3.11+](https://www.python.org/)\n* [Node.js](https://nodejs.org/)\n* [Go](https://golang.org/)\n* [Deno](https://deno.land/)\n* [Bun](https://bun.sh/)\n* [PHP](https://www.php.net/) + [Composer](https://getcomposer.org/)\n* [Java](https://www.java.com/)\n* [Dotnet](https://dotnet.microsoft.com/)\n* [Ruby](https://www.ruby-lang.org/)\n* [`wrk`](https://github.com/wg/wrk)\n\nEnsure each tool is available in your `PATH`.\n\n\n## 🚀 Usage\n\n#### 1. Clone \u0026 enter project\n\n```bash\ngit clone https://github.com/Drarox/Backend-Benchmark.git\ncd backend-benchmark\n```\n\n#### 2. Run presetup (install dependencies per framework)\n\n```bash\n./benchmark_presetup.sh\n```\n\n#### 3. Run benchmarks (fully automated)\n\n```bash\n./benchmark_runner.sh\n```\n\nThis will:\n\n* Sequentially start each framework server\n* Run a high-load test using [`wrk`](https://github.com/wg/wrk)\n* Kill the server\n* Save results in `results/`\n* Generate `results_dashboard.html`\n\n## 🐳 Run with Docker (No Host Dependencies)\n\nDon't want to install Python, Node, Go, Deno, Bun, or wrk on your machine?\nNo problem: everything runs cleanly inside a container.\nThe Docker image installs all the prerequisites !\n\n### ✅ One-Time: Build the Docker image\n\n```bash\ndocker build -t backend-benchmark .\n```\n\n### 🚀 Run the full benchmark suite\n\n```bash\ndocker run --rm -v \"$PWD/results:/app/results\" backend-benchmark\n```\n\n* Benchmarks all frameworks\n* Generates the HTML dashboard\n* Mounts results to your host in the `results/` folder\n\n\nThis lets you run the full suite **with zero host setup** and clean everything up with one `docker rmi`.\n\n## 🧾 Benchmark Results\n\nResults from Octoboer 20, 2025\n\n*Changelog: Lavarel, Spring Boot, ASP.NET Core, Ruby On Rails and Koa added*\n\n* **macOS** – M1 Pro (8-core), 16 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_macos_20251020.html)\n\n* **macOS (Docker Desktop)** – M1 Pro (8-core), 8 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_macos_docker_20251020.html)\n\n### Historical Results\n\n\u003cdetails\u003e\n\u003csummary\u003eResults from May 28, 2025\u003c/summary\u003e\n\n*Changelog: First run of the benchmark*\n\n* **macOS** – M1 Pro (8-core), 16 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_macos_20250528.html)\n\n* **macOS (Docker Desktop)** – M1 Pro (8-core), 8 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_macos_docker_20250528.html)\n\n* **Ubuntu (Docker)** – Xeon D-1531 (6-core), 32 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_ubuntu1_docker_20250528.html)\n\n* **Ubuntu** – Xeon D-1531 (6-core), 32 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_ubuntu1_20250530.html)\n\n* **Ubuntu (Docker)** – AMD Ryzen 7 1700X (8-core), 24 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_ubuntu2_docker_20250530.html)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eResults from October 10, 2025\u003c/summary\u003e\n\n*Changelog: Runtime and package updated*\n\n* **macOS** – M1 Pro (8-core), 16 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_macos_20251010.html)\n\n* **macOS (Docker Desktop)** – M1 Pro (8-core), 8 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_macos_docker_20251010.html)\n\n* **Ubuntu (Docker)** – Xeon D-1531 (6-core), 32 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_ubuntu1_docker_20251010.html)\n\n* **Ubuntu** – Xeon D-1531 (6-core), 32 GB RAM — [View dashboard](https://yannick-burkard.eu.org/backend-benchmark/results_dashboard_ubuntu1_20251010.html)\n\n\u003c/details\u003e\n\n## 🤝 Contributing\n\nPull requests welcome! Add frameworks, improve charts, or enhance the automation. Feel free to fork this repository and submit a [pull request](https://github.com/Drarox/Backend-Benchmark/pulls) with your changes.\n\n## 📄 License\n\nMIT — use freely, modify openly, benchmark responsibly.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrarox%2Fbackend-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrarox%2Fbackend-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrarox%2Fbackend-benchmark/lists"}