1
- ## Benchmarks
1
+ # Benchmarks
2
2
3
- Here, I compare common Minecraft servers against Pumpkin.
3
+ Here, common Minecraft servers are compared against Pumpkin.
4
4
5
- Is this comparison fair? Not really. While Pumpkin currently has far fewer features than other servers, which might suggest it uses fewer resources, it's important to consider that other servers have had years for optimization. Especially vanilla forks, which don’t need to rewrite the entire vanilla logic, can focus exclusively on optimizations.
6
-
7
- ALL TESTS HAVE BEEN RAN MULTIPLE TIMES TO GUARANTEE CONSISTENT RESULTS
8
-
9
- ALL PLAYERS DID NOT MOVE WHEN SPAWNING, ONLY THE INITIAL 8 CHUNKS WERE LOADED, THAT'S ALSO THE REASON CPU MAX IS USUALLY HIGH ON THE FIRST PLAYER
10
- ALL SERVERS USED THEIR OWN TERRAIN GENERATION, NO WORLD WAS PRE-LOADED
5
+ > [ !CAUTION]
6
+ > ** This comparison is unfair.** Pumpkin currently has far fewer features than other servers, which might suggest it uses fewer resources.
7
+ > It's also important to consider that other servers have had years for optimization.
8
+ > Vanilla forks, which don’t need to rewrite the entire vanilla logic, can focus exclusively on optimizations.
11
9
12
10
![ Screenshot From 2024-10-15 16-42-53] ( https://github.com/user-attachments/assets/e08fbb00-42fe-4479-a03b-11bb6886c91a )
13
11
@@ -50,40 +48,48 @@ ALL SERVERS USED THEIR OWN TERRAIN GENERATION, NO WORLD WAS PRE-LOADED
50
48
51
49
<sub ><sup >online mode was disabled for easier testing with non-premium accounts</sup ></sub >
52
50
51
+ > [ !NOTE]
52
+ > All tests have been ran multiple times to guarantee consistent results.
53
+ > All players did not move when spawning, only the initial 8 chunks were loaded.
54
+ > All servers used their own terrain generation, no world was pre-loaded.
55
+
56
+ > [ !IMPORTANT]
57
+ > ` CPU Max ` is usually higher with one player as the initial chunks are being loaded.
58
+
53
59
## Pumpkin
54
60
55
61
Build: [ 8febc50] ( https://github.com/Snowiiii/Pumpkin/commit/8febc5035d5611558c13505b7724e6ca284e0ada )
56
62
57
- Compile args:` --release `
63
+ Compile args: ` --release `
58
64
59
65
Run args:
60
66
61
- ** File Size:** 12,3MB
67
+ ** File Size:** < FmtNum :n = 12.3 />MB
62
68
63
- ** Startup time:** 8ms
69
+ ** Startup time:** < FmtNum :n = 8 />ms
64
70
65
- ** Shutdown time:** 0ms
71
+ ** Shutdown time:** < FmtNum :n = 0 />ms
66
72
67
- | Players | RAM | CPU idle | CPU Max |
68
- | ------- | ------- | -------- | ------- |
69
- | 0 | 392,2KB | 0,0% | 0,0% |
70
- | 1 | 24,9MB | 0,0% | 4,0% |
71
- | 2 | 25,1MB | 0,0% | 0,6% |
72
- | 5 | 26,0MB | 0,0% | 1,0% |
73
- | 10 | 27,1MB | 0,0% | 1,5% |
73
+ | Players | RAM | CPU Idle | CPU Max |
74
+ | ------- | --------------------- | ---------------- | ----------- ------- |
75
+ | 0 | < FmtNum :n = 392.2 />KB | < FmtNum :n = 0 />% | < FmtNum :n = 0 />% |
76
+ | 1 | < FmtNum :n = 24.9 />MB | < FmtNum :n = 0 />% | < FmtNum :n = 4 />% |
77
+ | 2 | < FmtNum :n = 25.1 />MB | < FmtNum :n = 0 />% | < FmtNum :n = 0.6 />% |
78
+ | 5 | < FmtNum :n = 26 />MB | < FmtNum :n = 0 />% | < FmtNum :n = 1 />% |
79
+ | 10 | < FmtNum :n = 27.1 />MB | < FmtNum :n = 0 />% | < FmtNum :n = 1.5 />% |
74
80
75
- <sub ><sup >pumpkin does cache already loaded chunks, resulting in no extra RAM usage besides player data and minimal CPU usage</sup ></sub >
81
+ <sub ><sup >Pumpkin does cache already loaded chunks, resulting in no extra RAM usage besides player data and minimal CPU usage. </sup ></sub >
76
82
77
83
#### Compile time
78
- Compiling from Nothing
84
+ Compiling from Nothing:
79
85
80
- ** Debug:** 10.35sec
81
- ** Release:** 38.40sec
86
+ ** Debug:** < FmtNum :n = 10.35 />sec
87
+ ** Release:** < FmtNum :n = 38.40 />sec
82
88
83
- Recompilation (pumpkin crate)
89
+ Recompilation (pumpkin crate):
84
90
85
- ** Debug:** 1.82sec
86
- ** Release:** 28.68sec
91
+ ** Debug:** < FmtNum :n = 1.82 />sec
92
+ ** Release:** < FmtNum :n = 28.68 />sec
87
93
88
94
## Vanilla
89
95
@@ -93,19 +99,19 @@ Compile args:
93
99
94
100
Run args: ` nogui `
95
101
96
- ** File Size:** 51,6MB
102
+ ** File Size:** < FmtNum :n = 51.6 />MB
97
103
98
- ** Startup time:** 7sec
104
+ ** Startup time:** < FmtNum :n = 7 />sec
99
105
100
- ** Shutdown time:** 4sec
106
+ ** Shutdown time:** < FmtNum :n = 4 />sec
101
107
102
- | Players | RAM | CPU idle | CPU Max |
103
- | ------- | ----- | -------- | ------- |
104
- | 0 | 860MB | 0,1-0,3 % | 51,0% |
105
- | 1 | 1.5GB | 0,9-1 % | 41,0% |
106
- | 2 | 1.6GB | 1,0-1,1% | 10,0% |
107
- | 5 | 1.8GB | 2,0 % | 20,0% |
108
- | 10 | 2,2GB | 4,0 % | 24,0% |
108
+ | Players | RAM | CPU idle | CPU Max |
109
+ | ------- | --------------------- | ---------------------------------------- | ----------- ------- |
110
+ | 0 | < FmtNum n = " 860 " />MB | < FmtNum n = " 0.1 " /> - < FmtNum n = " 0.3 " /> % | < FmtNum n = " 51 " />% |
111
+ | 1 | < FmtNum n = " 1.5 " />GB | < FmtNum n = " 0.9 " /> - < FmtNum n = " 1 " /> % | < FmtNum n = " 41 " />% |
112
+ | 2 | < FmtNum n = " 1.6 " />GB | < FmtNum n = " 1 " /> - < FmtNum n = " 1.1 " />% | < FmtNum n = " 10 " />% |
113
+ | 5 | < FmtNum n = " 1.8 " />GB | < FmtNum n = " 2 " /> % | < FmtNum n = " 20 " />% |
114
+ | 10 | < FmtNum n = " 2.2 " />GB | < FmtNum n = " 4 " /> % | < FmtNum n = " 24 " />% |
109
115
110
116
## Paper
111
117
@@ -115,19 +121,20 @@ Compile args:
115
121
116
122
Run args: ` nogui `
117
123
118
- ** File Size:** 49,4MB
124
+ ** File Size:** <FmtNum :n =49.4 />MB
125
+
126
+ ** Startup time:** <FmtNum :n =7 />sec
119
127
120
- ** Startup time:** 7sec
128
+ ** Shutdown time:** < FmtNum :n = 3 />sec
121
129
122
- ** Shutdown time:** 3sec
130
+ | Players | RAM | CPU idle | CPU Max |
131
+ | ------- | ------------------- | -------------------------------------- | ----------------- |
132
+ | 0 | <FmtNum :n =1.1 />GB | <FmtNum :n =0.2 /> - <FmtNum :n =0.3 />% | <FmtNum :n =36 />% |
133
+ | 1 | <FmtNum :n =1.7 />GB | <FmtNum :n =0.9 /> - <FmtNum :n =1.0 />% | <FmtNum :n =47 />% |
134
+ | 2 | <FmtNum :n =1.8 />GB | <FmtNum :n =1 /> - <FmtNum :n =1.1 />% | <FmtNum :n =10 />% |
135
+ | 5 | <FmtNum :n =1.9 />GB | <FmtNum :n =1.5 />% | <FmtNum :n =15 />% |
136
+ | 10 | <FmtNum :n =2 />GB | <FmtNum :n =3 />% | <FmtNum :n =20 />% |
123
137
124
- | Players | RAM | CPU idle | CPU Max |
125
- | ------- | ----- | -------- | ------- |
126
- | 0 | 1.1GB | 0,2-0,3% | 36,0% |
127
- | 1 | 1.7GB | 0,9-1,0% | 47,0% |
128
- | 2 | 1.8GB | 1-1-1,0% | 10,0% |
129
- | 5 | 1.9GB | 1.5% | 15,0% |
130
- | 10 | 2GB | 3,0% | 20,0% |
131
138
132
139
## Purpur
133
140
@@ -137,19 +144,19 @@ Compile args:
137
144
138
145
Run args: ` nogui `
139
146
140
- ** File Size:** 53,1MB
147
+ ** File Size:** < FmtNum :n = 53.1 />MB
141
148
142
- ** Startup time:** 8sec
149
+ ** Startup time:** < FmtNum :n = 8 />sec
143
150
144
- ** Shutdown time:** 4sec
151
+ ** Shutdown time:** < FmtNum :n = 4 />sec
145
152
146
- | Players | RAM | CPU idle | CPU Max |
147
- | ------- | ----- | -------- | ------- |
148
- | 0 | 1.4GB | 0,2-0,3 % | 25,0% |
149
- | 1 | 1.6GB | 0,7-1,0 % | 35,0% |
150
- | 2 | 1.7GB | 1,1-1,3 % | 9,0% |
151
- | 5 | 1.9GB | 1.6% | 20,0% |
152
- | 10 | 2.2GB | 2-2,5,0% | 26,0% |
153
+ | Players | RAM | CPU idle | CPU Max |
154
+ | ------- | ------------------- | -------------------------------------- | ---------- ------- |
155
+ | 0 | < FmtNum :n = 1.4 />GB | < FmtNum :n = 0.2 /> - < FmtNum :n = 0.3 /> % | < FmtNum :n = 25 />% |
156
+ | 1 | < FmtNum :n = 1.6 />GB | < FmtNum :n = 0.7 /> - < FmtNum :n = 1.0 /> % | < FmtNum :n = 35 />% |
157
+ | 2 | < FmtNum :n = 1.7 />GB | < FmtNum :n = 1.1 /> - < FmtNum :n = 1.3 /> % | < FmtNum :n = 9 />% |
158
+ | 5 | < FmtNum :n = 1.9 />GB | < FmtNum :n = 1.6 /> % | < FmtNum :n = 20 />% |
159
+ | 10 | < FmtNum :n = 2.2 />GB | < FmtNum :n = 2 /> - < FmtNum :n = 2.5 />% | < FmtNum :n = 26 />% |
153
160
154
161
## Minestom
155
162
@@ -161,20 +168,21 @@ Run args:
161
168
162
169
** Language:** Benchmarks ran with Kotlin 2.0.0 (Minestom itself is made with Java)
163
170
164
- ** File Size:** 2,8MB (Library)
171
+ ** File Size:** < FmtNum :n = 2.8 />MB (Library)
165
172
166
- ** Startup time:** 310ms
173
+ ** Startup time:** < FmtNum :n = 310 />ms
167
174
168
- ** Shutdown time:** 0ms
175
+ ** Shutdown time:** < FmtNum :n = 0 />ms
169
176
170
177
<sub >[ Used example code from] ( https://minestom.net/docs/setup/your-first-server ) </sub >
171
178
172
- | Players | RAM | CPU idle | CPU Max |
173
- | ------- | ----- | -------- | ------- |
174
- | 0 | 228MB | 0,1-0,3% | 1,0% |
175
- | 1 | 365MB | 0,9-1,0% | 5,0% |
176
- | 2 | 371MB | 1-1,1% | 4,0% |
177
- | 5 | 390MB | 1,0% | 6,0% |
178
- | 10 | 421MB | 3,0% | 9,0% |
179
+ | Players | RAM | CPU idle | CPU Max |
180
+ | ------- | ------------------- | -------------------------------------- | ---------------- |
181
+ | 0 | <FmtNum :n =228 />MB | <FmtNum :n =0.1 /> - <FmtNum :n =0.3 />% | <FmtNum :n =1 />% |
182
+ | 1 | <FmtNum :n =365 />MB | <FmtNum :n =0.9 /> - <FmtNum :n =1.0 />% | <FmtNum :n =5 />% |
183
+ | 2 | <FmtNum :n =371 />MB | <FmtNum :n =1 /> - <FmtNum :n =1.1 />% | <FmtNum :n =4 />% |
184
+ | 5 | <FmtNum :n =390 />MB | <FmtNum :n =1.0 />% | <FmtNum :n =6 />% |
185
+ | 10 | <FmtNum :n =421 />MB | <FmtNum :n =3 />% | <FmtNum :n =9 />% |
186
+
179
187
180
- Benchmarked at 15.10.2024 18:34 (UTC+2)
188
+ Benchmarked at < FmtDateTime :d = " new Date('2024-10-15T16:34Z') " />
0 commit comments