Skip to content

基准测试

虽然基准测试数据仅供参考,但它们对我们的开发和选择都很有帮助。

路由器

我们测量了一系列 JavaScript 路由器的性能。 例如,find-my-way 是 Fastify 内部使用的一个高性能路由器。

  • @medley/router
  • find-my-way
  • koa-tree-router
  • trek-router
  • express (包含处理)
  • koa-router

首先,我们在每个路由器中注册了以下路由。 这些路由类似于实际生产环境中使用的路由。

ts
export const 
routes
: Route[] = [
{
method
: 'GET',
path
: '/user' },
{
method
: 'GET',
path
: '/user/comments' },
{
method
: 'GET',
path
: '/user/avatar' },
{
method
: 'GET',
path
: '/user/lookup/username/:username' },
{
method
: 'GET',
path
: '/user/lookup/email/:address' },
{
method
: 'GET',
path
: '/event/:id' },
{
method
: 'GET',
path
: '/event/:id/comments' },
{
method
: 'POST',
path
: '/event/:id/comment' },
{
method
: 'GET',
path
: '/map/:location/events' },
{
method
: 'GET',
path
: '/status' },
{
method
: 'GET',
path
: '/very/deeply/nested/route/hello/there' },
{
method
: 'GET',
path
: '/static/*' },
]

然后我们向以下端点发送请求。

ts
const 
routes
: (Route & {
name
: string })[] = [
{
name
: '短静态路由',
method
: 'GET',
path
: '/user',
}, {
name
: '相同前缀的静态路由',
method
: 'GET',
path
: '/user/comments',
}, {
name
: '动态路由',
method
: 'GET',
path
: '/user/lookup/username/hey',
}, {
name
: '混合静态动态路由',
method
: 'GET',
path
: '/event/abcd1234/comments',
}, {
name
: 'post请求',
method
: 'POST',
path
: '/event/abcd1234/comment',
}, {
name
: '长静态路由',
method
: 'GET',
path
: '/very/deeply/nested/route/hello/there',
}, {
name
: '通配符路由',
method
: 'GET',
path
: '/static/index.html',
}, ]

让我们看看测试结果。

Node.js 环境下

以下截图展示了在 Node.js 环境下的测试结果。

bench

bench

bench

bench

bench

bench

bench

bench

Bun 环境下

以下截图展示了在 Bun 环境下的测试结果。

bench

bench

bench

bench

bench

bench

bench

bench

Cloudflare Workers

与其他 Cloudflare Workers 路由器相比,Hono 是最快的

Hono x 402,820 ops/sec ±4.78% (80 runs sampled)
itty-router x 212,598 ops/sec ±3.11% (87 runs sampled)
sunder x 297,036 ops/sec ±4.76% (77 runs sampled)
worktop x 197,345 ops/sec ±2.40% (88 runs sampled)
最快的是 Hono
✨  Done in 28.06s.

Deno

与其他 Deno 框架相比,Hono 是最快的

  • 测试机器:Apple MacBook Pro,32 GiB,M1 Pro,Deno v1.22.0
  • 测试脚本:benchmarks/deno
  • 测试方法:bombardier --fasthttp -d 10s -c 100 'http://localhost:8000/user/lookup/username/foo'
框架版本结果
Hono3.0.0每秒请求数: 136112
Fast4.0.0-beta.1每秒请求数: 103214
Megalo0.3.0每秒请求数: 64597
Faster5.7每秒请求数: 54801
oak10.5.1每秒请求数: 43326
opine2.2.0每秒请求数: 30700

另一个基准测试结果:denosaurs/bench

Bun

Hono 是 Bun 最快的框架之一。 你可以在下面看到相关结果。

Released under the MIT License.