|
| 1 | +## Benchmark |
| 2 | + |
| 3 | +Below is a comparison of body-parser and milliparsec in terms of parsing a request with JSON payload. |
| 4 | + |
| 5 | +### Environment |
| 6 | + |
| 7 | +- Node.js 22.3.0 |
| 8 | +- System: Linux 6.9.7 |
| 9 | +- Machine: Asus ROG Zephyrus G16 |
| 10 | + |
| 11 | +### Benchmark command: |
| 12 | + |
| 13 | +```sh |
| 14 | +autocannon -b '{"a":1}' -H "Content-Type=application/json" localhost:3002 # or 3003 |
| 15 | +``` |
| 16 | + |
| 17 | +### Results |
| 18 | + |
| 19 | +body-parser result: |
| 20 | + |
| 21 | +``` |
| 22 | +┌─────────┬──────┬──────┬───────┬──────┬─────────┬─────────┬────────┐ |
| 23 | +│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │ |
| 24 | +├─────────┼──────┼──────┼───────┼──────┼─────────┼─────────┼────────┤ |
| 25 | +│ Latency │ 0 ms │ 0 ms │ 0 ms │ 0 ms │ 0.01 ms │ 0.79 ms │ 251 ms │ |
| 26 | +└─────────┴──────┴──────┴───────┴──────┴─────────┴─────────┴────────┘ |
| 27 | +┌───────────┬─────────┬─────────┬─────────┬─────────┬───────────┬──────────┬─────────┐ |
| 28 | +│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │ |
| 29 | +├───────────┼─────────┼─────────┼─────────┼─────────┼───────────┼──────────┼─────────┤ |
| 30 | +│ Req/Sec │ 31,231 │ 31,231 │ 42,815 │ 43,935 │ 41,823.28 │ 3,470.88 │ 31,224 │ |
| 31 | +├───────────┼─────────┼─────────┼─────────┼─────────┼───────────┼──────────┼─────────┤ |
| 32 | +│ Bytes/Sec │ 4.03 MB │ 4.03 MB │ 5.52 MB │ 5.67 MB │ 5.39 MB │ 448 kB │ 4.03 MB │ |
| 33 | +└───────────┴─────────┴─────────┴─────────┴─────────┴───────────┴──────────┴─────────┘ |
| 34 | +
|
| 35 | +Req/Bytes counts sampled once per second. |
| 36 | +# of samples: 11 |
| 37 | +
|
| 38 | +460k requests in 11.02s, 59.3 MB read |
| 39 | +``` |
| 40 | + |
| 41 | +milliparsec result: |
| 42 | + |
| 43 | +``` |
| 44 | +┌─────────┬──────┬──────┬───────┬──────┬─────────┬─────────┬────────┐ |
| 45 | +│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │ |
| 46 | +├─────────┼──────┼──────┼───────┼──────┼─────────┼─────────┼────────┤ |
| 47 | +│ Latency │ 0 ms │ 0 ms │ 0 ms │ 0 ms │ 0.01 ms │ 0.65 ms │ 254 ms │ |
| 48 | +└─────────┴──────┴──────┴───────┴──────┴─────────┴─────────┴────────┘ |
| 49 | +┌───────────┬─────────┬─────────┬─────────┬─────────┬───────────┬──────────┬────────┐ |
| 50 | +│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │ |
| 51 | +├───────────┼─────────┼─────────┼─────────┼─────────┼───────────┼──────────┼────────┤ |
| 52 | +│ Req/Sec │ 52,511 │ 52,511 │ 63,007 │ 67,455 │ 63,397.82 │ 4,255.42 │ 52,480 │ |
| 53 | +├───────────┼─────────┼─────────┼─────────┼─────────┼───────────┼──────────┼────────┤ |
| 54 | +│ Bytes/Sec │ 6.41 MB │ 6.41 MB │ 7.69 MB │ 8.23 MB │ 7.74 MB │ 519 kB │ 6.4 MB │ |
| 55 | +└───────────┴─────────┴─────────┴─────────┴─────────┴───────────┴──────────┴────────┘ |
| 56 | +
|
| 57 | +Req/Bytes counts sampled once per second. |
| 58 | +# of samples: 11 |
| 59 | +
|
| 60 | +697k requests in 11.02s, 85.1 MB rea |
| 61 | +``` |
| 62 | + |
| 63 | +## Verdict |
| 64 | + |
| 65 | +milliparsec, on average, is ~34% faster. |
0 commit comments