Bunzer - the fastest javascript server
- 1 file, 0 dependencies
- 25x faster than Express based on this benchmark
Framework |
Average |
Get (/) |
Params, query & header |
Post JSON |
bunzer (bun) |
298,366.237 |
362,260.14 |
270,062.97 |
262,775.6 |
uws (node) |
259,184.253 |
314,131.09 |
260,835.69 |
202,585.98 |
bun (bun) |
217,784.367 |
256,266.44 |
199,123.36 |
197,963.3 |
elysia (bun) |
215,080.713 |
250,485.6 |
205,187.71 |
189,568.83 |
bun-web-standard (bun) |
199,598.013 |
220,924.03 |
201,743.12 |
176,126.89 |
stricjs (bun) |
195,869.997 |
225,208.1 |
186,072.39 |
176,329.5 |
vixeny (bun) |
189,681.683 |
218,870.19 |
185,639.64 |
164,535.22 |
nhttp (bun) |
171,972.41 |
206,435.07 |
170,289.16 |
139,193 |
hono (bun) |
166,691.877 |
210,994.98 |
165,364.33 |
123,716.32 |
hyper-express (node) |
165,968.12 |
236,069.89 |
193,232.91 |
68,601.56 |
baojs (bun) |
133,058.503 |
167,558.97 |
132,522.8 |
99,093.74 |
nbit (bun) |
113,735.613 |
137,937.14 |
115,139.05 |
88,130.65 |
hono (deno) |
109,047.02 |
129,770.14 |
120,337.58 |
77,033.34 |
hyperbun (bun) |
104,449.793 |
124,138.08 |
107,202.7 |
82,008.6 |
h3 (node) |
86,557.917 |
95,180.51 |
84,370.79 |
80,122.45 |
fast (deno) |
74,739.957 |
88,251.24 |
75,445.2 |
60,523.43 |
cheetah (deno) |
58,555.197 |
110,375.11 |
49,290.99 |
15,999.49 |
fastify (node) |
52,983.053 |
57,229.67 |
57,187.39 |
44,532.1 |
oak (deno) |
39,889.113 |
46,447.17 |
43,050.73 |
30,169.44 |
abc (deno) |
33,383.993 |
42,279.4 |
35,024.77 |
22,847.81 |
koa (node) |
32,620.467 |
35,640.15 |
34,624.91 |
27,596.34 |
hapi (node) |
23,069.607 |
34,472.45 |
12,411.66 |
22,324.71 |
express (bun) |
22,332.733 |
31,868.31 |
25,077.46 |
10,052.43 |
hono (node) |
13,252.393 |
12,776.93 |
15,258.05 |
11,722.2 |
express (node) |
12,913.697 |
13,658.09 |
14,221.31 |
10,861.69 |
nest (node) |
11,989.067 |
12,905.22 |
13,060.53 |
10,001.45 |
acorn (deno) |
8,149.053 |
13,112.01 |
6,375.24 |
4,959.91 |
Documentation / Usage Example
import {serve, get, post, response} from 'bunzer'
get('/hello', req => 'Hello, World!')
get('/json', req => ({hello: 'world'}))
get('/hello/:name', req => `Hello, ${req.params.name}!`)
get('/status', req => response(`I'm a teapot`, {status: 418}))
get('/setheaders', req => response(`brrrr`, {headers: {'X-Powered-By': 'bunzer'}}))
get('/getheaders', req => req.headers['user-agent'])
get('/ip', req => req.ip)
get('/query', req => req.query.limit) // /query?limit=10
get('/error', req => null.ptr)
get('/async', async req => (await fetch('https://example.com')).text())
post('/body', req => {
const {username, message} = JSON.parse(req.body)
})
serve({hostname: '127.0.0.1', port: 8080, public_folder: 'public'})