{"id":15408383,"url":"https://github.com/yusukebe/web-framework-bench","last_synced_at":"2025-10-24T14:27:16.598Z","repository":{"id":66623605,"uuid":"532534810","full_name":"yusukebe/web-framework-bench","owner":"yusukebe","description":"For web frameworks on Node, on Deno, and on Bun.","archived":false,"fork":false,"pushed_at":"2022-09-05T23:33:19.000Z","size":23,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T06:33:17.054Z","etag":null,"topics":["bun","deno","node"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yusukebe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2022-09-04T12:32:02.000Z","updated_at":"2023-09-30T11:43:47.000Z","dependencies_parsed_at":"2023-05-25T00:45:20.342Z","dependency_job_id":null,"html_url":"https://github.com/yusukebe/web-framework-bench","commit_stats":{"total_commits":20,"total_committers":2,"mean_commits":10.0,"dds":0.25,"last_synced_commit":"f2b99f96e829370e52f0d862359a93f4f90a6719"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusukebe%2Fweb-framework-bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusukebe%2Fweb-framework-bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusukebe%2Fweb-framework-bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusukebe%2Fweb-framework-bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yusukebe","download_url":"https://codeload.github.com/yusukebe/web-framework-bench/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249512520,"owners_count":21284121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bun","deno","node"],"created_at":"2024-10-01T16:33:44.377Z","updated_at":"2025-10-07T12:11:25.288Z","avatar_url":"https://github.com/yusukebe.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Web Framework Bench\n\nFor web frameworks on Node, on Deno, and on Bun.\n\n\u003e Fast is not everything, but fast is everything.\n\n## Motivation\n\nThere are some benchmark projects for JavaScript web frameworks, but none of them satisfy me.\nBecause one is just measuring \"Hello World\" and another is for routing.\nI think we need to measure both \"Hello World\" and routing and the handling of Responses and Requests.\n\nIn this sense, [SaltyAom's benchmarks](https://github.com/SaltyAom/bun-http-framework-benchmark) are good.\nHowever I wanted to add to that the Deno and Node frameworks.\nI also thought we should use more complex routing.\n\nAbove all, I wanted to make sure that [Hono](https://github.com/honojs/hono) I'm making is fast.\n\n## Frameworks\n\nWhich frameworks used for this benchmarks, see [frameworks.js](./frameworks.js)\n\n## End-points\n\n* `GET /` - Just returns \"Bench\" as plain text.\n* `GET /posts/123/comments?query=foo` - Handles to get path parameters and query parameters, and add `x-powered-by` to Response headers.\n* `POST /posts` - Returns the received JSON string into an object, again into a string.\n\nIn addition to the above, the following routing is added:\n\n```ts\nexport const routes = [\n  { path: '/top', text: 'Top' },\n  { path: '/about', text: 'About' },\n  { path: '/about/maps', text: 'About Maps' },\n  { path: '/about/contact', text: 'About Contact' },\n  { path: '/authors', text: 'Authors' },\n  { path: '/authors/:name', text: 'Author Name' },\n  { path: '/posts', text: 'Posts' },\n  { path: '/posts/:id', text: 'Posts Permalink' },\n  { path: '/posts/:id/comments/:commentId', text: 'Posts Comment Permalink' },\n]\n```\n\n## Prerequisites\n\n* [oha](https://github.com/hatoo/oha)\n* Node.js\n* Deno\n* Bun\n\nYou should use Deno and Bun as latest possible. For Bun, to upgrade as latest canary release, run the below:\n\n```\nbun upgrade --canary\n```\n\n## Run\n\n```\nyarn install\nyarn start\n```\n\nIt is possible that the version of the framework has been upgraded.\nIf you want to bump up the framework version, run this:\n\n```\nyarn add hono\n```\n\n## Results\n\nSee the results in the generated [results/results.md](./results/results.md).\n\n## Related Projects\n\n* [SaltyAom/bun-http-framework-benchmark](https://github.com/SaltyAom/bun-http-framework-benchmark) - Heavily inspired.\n* [delvedor/router-benchmark](https://github.com/delvedor/router-benchmark) - Node routing benchmarks.\n* [denosaurs/bench](https://github.com/denosaurs/bench) - Deno framework benchmarks.\n\n## Author\n\nYusuke Wada \u003chttps://github.com/yusukebe\u003e\n\n## License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusukebe%2Fweb-framework-bench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyusukebe%2Fweb-framework-bench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusukebe%2Fweb-framework-bench/lists"}