1
- ## Benchmark
1
+ # Benchmark
2
2
3
- Below is a comparison of body-parser and milliparsec in terms of parsing a request with JSON payload .
3
+ Below are benchmarks of body-parser vs milliparsec and formidable vs milliparsec. Please take into account that these benchmarks are not entirely accurate, since they are taken on a regular desktop computer in usual conditions .
4
4
5
- ### Environment
5
+ ## Environment
6
6
7
7
- Node.js 22.3.0
8
- - System: Linux 6.9.7
8
+ - System: Linux 6.10.10
9
+ - CPU: Intel Core i9-13900H
9
10
- Machine: Asus ROG Zephyrus G16
10
11
11
- ### JSON parsing
12
+ ## JSON parsing
12
13
13
- #### Benchmark command:
14
+ ### Benchmark command:
14
15
15
16
``` sh
16
17
autocannon -b ' {"a":1}' -H " Content-Type=application/json" localhost:3002 # or 3003
17
18
```
18
19
19
- #### Results
20
+ ### Results
20
21
21
22
body-parser result:
22
23
23
24
```
24
25
βββββββββββ¬βββββββ¬βββββββ¬ββββββββ¬βββββββ¬ββββββββββ¬ββββββββββ¬βββββββββ
25
26
β Stat β 2.5% β 50% β 97.5% β 99% β Avg β Stdev β Max β
26
27
βββββββββββΌβββββββΌβββββββΌββββββββΌβββββββΌββββββββββΌββββββββββΌβββββββββ€
27
- β Latency β 0 ms β 0 ms β 0 ms β 0 ms β 0.01 ms β 0.79 ms β 251 ms β
28
+ β Latency β 0 ms β 0 ms β 0 ms β 0 ms β 0.01 ms β 0.81 ms β 258 ms β
28
29
βββββββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄ββββββββββ΄ββββββββββ΄βββββββββ
29
30
βββββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββββ¬βββββββββββ¬ββββββββββ
30
31
β Stat β 1% β 2.5% β 50% β 97.5% β Avg β Stdev β Min β
31
32
βββββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββββΌβββββββββββΌββββββββββ€
32
- β Req/Sec β 31,231 β 31,231 β 42,815 β 43,935 β 41,823.28 β 3,470.88 β 31,224 β
33
+ β Req/Sec β 33,055 β 33,055 β 44,095 β 45,055 β 42,820.37 β 3,265.01 β 33,046 β
33
34
βββββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββββΌβββββββββββΌββββββββββ€
34
- β Bytes/Sec β 4.03 MB β 4.03 MB β 5.52 MB β 5.67 MB β 5.39 MB β 448 kB β 4.03 MB β
35
+ β Bytes/Sec β 4.26 MB β 4.26 MB β 5.69 MB β 5.81 MB β 5.52 MB β 421 kB β 4.26 MB β
35
36
βββββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββββ΄βββββββββββ΄ββββββββββ
36
37
37
38
Req/Bytes counts sampled once per second.
38
39
# of samples: 11
39
40
40
- 460k requests in 11.02s, 59.3 MB read
41
+ 471k requests in 11.03s, 60.8 MB read
41
42
```
42
43
43
44
milliparsec result:
@@ -46,34 +47,80 @@ milliparsec result:
46
47
βββββββββββ¬βββββββ¬βββββββ¬ββββββββ¬βββββββ¬ββββββββββ¬ββββββββββ¬βββββββββ
47
48
β Stat β 2.5% β 50% β 97.5% β 99% β Avg β Stdev β Max β
48
49
βββββββββββΌβββββββΌβββββββΌββββββββΌβββββββΌββββββββββΌββββββββββΌβββββββββ€
49
- β Latency β 0 ms β 0 ms β 0 ms β 0 ms β 0.01 ms β 0.65 ms β 254 ms β
50
+ β Latency β 0 ms β 0 ms β 0 ms β 0 ms β 0.01 ms β 0.64 ms β 252 ms β
50
51
βββββββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄ββββββββββ΄ββββββββββ΄βββββββββ
51
- βββββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββββ¬βββββββββββ¬βββββββββ
52
- β Stat β 1% β 2.5% β 50% β 97.5% β Avg β Stdev β Min β
53
- βββββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββββΌβββββββββββΌβββββββββ€
54
- β Req/Sec β 52,511 β 52,511 β 63,007 β 67,455 β 63,397.82 β 4,255.42 β 52,480 β
55
- βββββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββββΌβββββββββββΌβββββββββ€
56
- β Bytes/Sec β 6.41 MB β 6.41 MB β 7.69 MB β 8.23 MB β 7.74 MB β 519 kB β 6.4 MB β
57
- βββββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββββ΄βββββββββββ΄βββββββββ
52
+ βββββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββββ¬βββββββββββ¬βββββββββ β
53
+ β Stat β 1% β 2.5% β 50% β 97.5% β Avg β Stdev β Min β
54
+ βββββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββββΌβββββββββββΌβββββββββ β€
55
+ β Req/Sec β 50,751 β 50,751 β 63,423 β 67,071 β 63,610.19 β 4,416.72 β 50,739 β
56
+ βββββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββΌββββββββββββΌβββββββββββΌβββββββββ β€
57
+ β Bytes/Sec β 6.19 MB β 6.19 MB β 7.74 MB β 8.18 MB β 7.76 MB β 538 kB β 6.19 MB β
58
+ βββββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββββ΄βββββββββββ΄βββββββββ β
58
59
59
60
Req/Bytes counts sampled once per second.
60
61
# of samples: 11
61
62
62
- 697k requests in 11.02s, 85.1 MB rea
63
+ 700k requests in 11.02s, 85.4 MB read
63
64
```
64
65
65
66
### Verdict
66
67
67
- milliparsec, on average, is ~ 34 % faster.
68
+ milliparsec, on average, is ~ 30-40 % faster.
68
69
69
- ### Multipart with files
70
+ ## Multipart with files
70
71
71
- #### Benchmark command:
72
+ ### Benchmark command:
72
73
73
74
``` sh
74
75
autocannon -m POST --form ' { "file": { "type": "file", "path": "./file.txt" } }' localhost:3004
75
76
```
76
77
77
- #### Results
78
+ ### Results
79
+
80
+ formidable result:
81
+
82
+ ```
83
+ βββββββββββ¬βββββββ¬βββββββ¬ββββββββ¬ββββββββ¬ββββββββββ¬ββββββββββ¬βββββββββ
84
+ β Stat β 2.5% β 50% β 97.5% β 99% β Avg β Stdev β Max β
85
+ βββββββββββΌβββββββΌβββββββΌββββββββΌββββββββΌββββββββββΌββββββββββΌβββββββββ€
86
+ β Latency β 1 ms β 8 ms β 26 ms β 32 ms β 9.73 ms β 8.81 ms β 256 ms β
87
+ βββββββββββ΄βββββββ΄βββββββ΄ββββββββ΄ββββββββ΄ββββββββββ΄ββββββββββ΄βββββββββ
88
+ βββββββββββββ¬ββββββββββ¬ββββββββββ¬βββββββββ¬βββββββββ¬βββββββββ¬βββββββββ¬ββββββββββ
89
+ β Stat β 1% β 2.5% β 50% β 97.5% β Avg β Stdev β Min β
90
+ βββββββββββββΌββββββββββΌββββββββββΌβββββββββΌβββββββββΌβββββββββΌβββββββββΌββββββββββ€
91
+ β Req/Sec β 420 β 420 β 690 β 2,517 β 974.7 β 627.32 β 420 β
92
+ βββββββββββββΌββββββββββΌββββββββββΌβββββββββΌβββββββββΌβββββββββΌβββββββββΌββββββββββ€
93
+ β Bytes/Sec β 83.2 kB β 83.2 kB β 137 kB β 498 kB β 193 kB β 124 kB β 83.2 kB β
94
+ βββββββββββββ΄ββββββββββ΄ββββββββββ΄βββββββββ΄βββββββββ΄βββββββββ΄βββββββββ΄ββββββββββ
95
+
96
+ Req/Bytes counts sampled once per second.
97
+ # of samples: 10
98
+
99
+ 10k requests in 10.03s, 1.93 MB read
100
+ ```
101
+
102
+ milliparsec result:
103
+
104
+ ```
105
+ βββββββββββ¬βββββββ¬βββββββ¬ββββββββ¬βββββββ¬ββββββββββ¬ββββββββββ¬βββββββββ
106
+ β Stat β 2.5% β 50% β 97.5% β 99% β Avg β Stdev β Max β
107
+ βββββββββββΌβββββββΌβββββββΌββββββββΌβββββββΌββββββββββΌββββββββββΌβββββββββ€
108
+ β Latency β 0 ms β 0 ms β 1 ms β 1 ms β 0.21 ms β 2.15 ms β 375 ms β
109
+ βββββββββββ΄βββββββ΄βββββββ΄ββββββββ΄βββββββ΄ββββββββββ΄ββββββββββ΄βββββββββ
110
+ βββββββββββββ¬βββββββββ¬βββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬βββββββββββ¬βββββββββ
111
+ β Stat β 1% β 2.5% β 50% β 97.5% β Avg β Stdev β Min β
112
+ βββββββββββββΌβββββββββΌβββββββββΌββββββββββΌββββββββββΌββββββββββΌβββββββββββΌβββββββββ€
113
+ β Req/Sec β 6,543 β 6,543 β 14,607 β 15,455 β 13,841 β 2,516.57 β 6,542 β
114
+ βββββββββββββΌβββββββββΌβββββββββΌββββββββββΌββββββββββΌββββββββββΌβββββββββββΌβββββββββ€
115
+ β Bytes/Sec β 1.3 MB β 1.3 MB β 2.89 MB β 3.06 MB β 2.74 MB β 498 kB β 1.3 MB β
116
+ βββββββββββββ΄βββββββββ΄βββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄βββββββββββ΄βββββββββ
117
+
118
+ Req/Bytes counts sampled once per second.
119
+ # of samples: 10
120
+
121
+ 138k requests in 10.03s, 27.4 MB read
122
+ ```
123
+
124
+ ### Verdict
78
125
79
- TBD
126
+ milliparsec, on average, is ~ 1000-1200% faster.
0 commit comments