# 性能基准测试
这里将 Pumpkin 与常见的 Minecraft 服务器软件进行比较。
> [!CAUTION]
> **这个比较并不完全公平。** Pumpkin 目前的功能远少于其他服务器,这可能意味着它使用的资源更少。
> 同时也要考虑到其他服务器已经有多年的优化经验。
> 原版分支不需要重写整个原版逻辑,可以专注于优化。

## 规格
#### 技术规格
**软件**
- 发行版:Manjaro Linux
- 架构:x86_64 (64位)
- 内核版本:6.11.3-arch1-1
**硬件**
- 主板:MAG B650 TOMAHAWK WIFI
- CPU:AMD Ryzen 7600X 6核
- 内存:Corsair 2x16GB DDR5 6000Mhz
- 存储:Samsung 990 PRO 1TB PCIe 4.0 M.2 SSD
- 散热:be quiet Dark Rock Elite
**Rust**
- 工具链:stable-x86_64-unknown-linux-gnu (1.81.0)
- Rust 编译器:rustc 1.81.0 (eeb90cda1 2024-09-04)
**Java**
- JDK 版本:OpenJDK 23 64位 2024-09-17
- JRE 版本:OpenJDK Runtime Environment (build 23+37)
- 供应商:Oracle
#### 游戏设置
- Minecraft 版本:1.21.1
- 视距:10
- 模拟距离:10
- 在线模式:false
- Rcon:false
为了使用非正版账号进行更容易的测试,禁用了在线模式。
> [!NOTE]
> 所有测试都进行了多次以获得更准确的结果。
> 所有玩家在生成时都没有移动。只加载了初始的8个区块。
> 所有服务器都使用了各自的地形生成。没有预加载世界。
> [!IMPORTANT]
> 单个玩家时 `CPU 最大值` 通常更高,因为初始区块正在被加载。
## Pumpkin
构建版本:[8febc50](https://github.com/Snowiiii/Pumpkin/commit/8febc5035d5611558c13505b7724e6ca284e0ada)
编译参数:`--release`
运行参数:
**文件大小:** MB
**启动时间:** ms
**关闭时间:** ms
| 玩家数 | 内存 | CPU 空闲 | CPU 最大值 |
| ------ | --------------------- | ---------------- | ------------------ |
| 0 | KB | % | % |
| 1 | MB | % | % |
| 2 | MB | % | % |
| 5 | MB | % | % |
| 10 | MB | % | % |
Pumpkin 会缓存已加载的区块,除了玩家数据外不会使用额外的内存,且 CPU 使用率最小。
#### 编译时间
从零开始编译:
**调试模式:** 秒
**发布模式:** 秒
重新编译 (pumpkin crate):
**调试模式:** 秒
**发布模式:** 秒
## 原版 (Vanilla)
发布版本:[1.21.1](https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar)
编译参数:
运行参数:`nogui`
**文件大小:** MB
**启动时间:** 秒
**关闭时间:** 秒
| 玩家数 | 内存 | CPU 空闲 | CPU 最大值 |
| ------ | -------------------- | --------------------------------------- | ------------------ |
| 0 | MB | - % | % |
| 1 | GB | - % | % |
| 2 | GB | - % | % |
| 5 | GB | % | % |
| 10 | GB | % | % |
## Paper
构建版本:[122](https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/122/downloads/paper-1.21.1-122.jar)
编译参数:
运行参数:`nogui`
**文件大小:** MB
**启动时间:** 秒
**关闭时间:** 秒
| 玩家数 | 内存 | CPU 空闲 | CPU 最大值 |
| ------ | ------------------- | -------------------------------------- | ----------------- |
| 0 | GB | - % | % |
| 1 | GB | - % | % |
| 2 | GB | - % | % |
| 5 | GB | % | % |
| 10 | GB | % | % |
## Purpur
构建版本:[2324](https://api.purpurmc.org/v2/purpur/1.21.1/2324/download)
编译参数:
运行参数:`nogui`
**文件大小:** MB
**启动时间:** 秒
**关闭时间:** 秒
| 玩家数 | 内存 | CPU 空闲 | CPU 最大值 |
| ------ | ------------------- | -------------------------------------- | ----------------- |
| 0 | GB | - % | % |
| 1 | GB | - % | % |
| 2 | GB | - % | % |
| 5 | GB | % | % |
| 10 | GB | - % | % |
## Minestom
提交版本:[0ca1dda2fe](https://github.com/Minestom/Minestom/commit/0ca1dda2fe11390a1b89a228bbe7bf78fefc73e1)
编译参数:
运行参数:
**语言:** 使用 Kotlin 2.0.0 运行基准测试(Minestom 本身使用 Java 开发)
**文件大小:** MB(库)
**启动时间:** ms
**关闭时间:** ms
[示例代码来源](https://minestom.net/docs/setup/your-first-server)
| 玩家数 | 内存 | CPU 空闲 | CPU 最大值 |
| ------ | ------------------- | -------------------------------------- | ---------------- |
| 0 | MB | - % | % |
| 1 | MB | - % | % |
| 2 | MB | - % | % |
| 5 | MB | % | % |
| 10 | MB | % | % |
基准测试时间