Aller au contenu

Tests de performance ​

Les tests de performance ne sont que des tests, mais ils comptent pour nous.

Routeurs ​

Nous avons mesuré la vitesse de plusieurs routeurs JavaScript. Par exemple, find-my-way est un routeur très rapide utilisé par Fastify.

  • @medley/router
  • find-my-way
  • koa-tree-router
  • trek-router
  • express (traitement inclus)
  • koa-router

Nous avons commencé par enregistrer les routes suivantes dans chaque routeur. Elles ressemblent à celles d’applications réelles.

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/*' },
]

Puis nous avons envoyé des requêtes aux points d’entrée suivants.

ts
const 
routes
: (Route & {
name
: string })[] = [
{
name
: 'short static',
method
: 'GET',
path
: '/user',
}, {
name
: 'static with same radix',
method
: 'GET',
path
: '/user/comments',
}, {
name
: 'dynamic route',
method
: 'GET',
path
: '/user/lookup/username/hey',
}, {
name
: 'mixed static dynamic',
method
: 'GET',
path
: '/event/abcd1234/comments',
}, {
name
: 'post',
method
: 'POST',
path
: '/event/abcd1234/comment',
}, {
name
: 'long static',
method
: 'GET',
path
: '/very/deeply/nested/route/hello/there',
}, {
name
: 'wildcard',
method
: 'GET',
path
: '/static/index.html',
}, ]

Examinons les résultats.

Sur Node.js ​

Les captures d’écran suivantes présentent les résultats sur Node.js.

Sur Bun ​

Les captures d’écran suivantes présentent les résultats sur Bun.

Cloudflare Workers ​

Hono est le plus rapide parmi les routeurs pour Cloudflare Workers comparés ici.

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)
Fastest is Hono
✨  Done in 28.06s.

Deno ​

Hono est le plus rapide parmi les frameworks pour Deno comparés ici.

  • Machine : Apple MacBook Pro, 32 GiB, M1 Pro, Deno v1.22.0
  • Scripts : benchmarks/deno
  • Méthode : bombardier --fasthttp -d 10s -c 100 'http://localhost:8000/user/lookup/username/foo'
FrameworkVersionRésultats
Hono3.0.0Requêtes/seconde : 136112
Fast4.0.0-beta.1Requêtes/seconde : 103214
Megalo0.3.0Requêtes/seconde : 64597
Faster5.7Requêtes/seconde : 54801
oak10.5.1Requêtes/seconde : 43326
opine2.2.0Requêtes/seconde : 30700

Autre résultat de test de performance : denosaurs/bench

Bun ​

Hono est l’un des frameworks les plus rapides pour Bun. Vous pouvez le constater dans le test de performance suivant.

Publié sous licence MIT.