# Benchmarks
Aqui, softwares de servidores Minecraft comuns são comparados com o Pumpkin.
> [!CAUTION] CUIDADO
> **Esta comparação é injusta.** Pumpkin atualmente tem muito menos recursos que outros servidores, o que pode sugerir que ele usa menos recursos.
> Também é importante considerar que outros servidores tiveram anos para otimizar.
> Forks do Vanilla, que não precisam reescrever toda a lógica do Vanilla, podem se concentrar exclusivamente em otimizações.

## Especificações
#### Técnicas
**Software**
- Distribuição: Manjaro Linux
- Arquitetura: x86_64 (64-bit)
- Versão do Kernel: 6.11.3-arch1-1
**Hardware**
- Placa-mãe: MAG B650 TOMAHAWK WIFI
- CPU: AMD Ryzen 7600X 6-Core
- RAM: Corsair 2x16GB DDR5 6000Mhz
- Armazenamento: Samsung 990 PRO 1TB PCIe 4.0 M.2 SSD
- Refrigeração: be quiet Dark Rock Elite
**Rust**
- Toolchain: stable-x86_64-unknown-linux-gnu (1.81.0)
- Compilador Rust: rustc 1.81.0 (eeb90cda1 2024-09-04)
**Java**
- Versão do JDK: OpenJDK 23 64-Bit 2024-09-17
- Versão do JRE: OpenJDK Runtime Environment (build 23+37)
- Fornecedor: Oracle
#### Jogo
- Versão do Minecraft: 1.21.1
- Distância de visão: 10
- Distância simulada: 10
- Modo online: falso
- Rcon: falso
O modo online foi desativado para facilitar os testes com contas não premium.
> [!NOTE] NOTA
> Todos os testes foram realizados várias vezes para obter resultados mais precisos.
> Todos os jogadores não se moveram ao nascer. Apenas os 8 primeiros chunks foram carregados.
> Todos os servidores usaram sua própria geração de terreno. Nenhum mundo foi pré-carregado.
> [!IMPORTANT] IMPORTANTE
> `CPU Max` geralmente é maior com um jogador, pois os chunks iniciais estão sendo carregados.
## Pumpkin
Build: [8febc50](https://github.com/Snowiiii/Pumpkin/commit/8febc5035d5611558c13505b7724e6ca284e0ada)
Argumentos de compilação: `--release`
Argumentos de execução:
**Tamanho do arquivo:** MB
**Tempo de inicialização:** ms
**Tempo de desligamento:** ms
| Jogadores | RAM | CPU Ocioso | CPU Máx |
| --------- | --------------------- | ---------------- | ------------------ |
| 0 | KB | % | % |
| 1 | MB | % | % |
| 2 | MB | % | % |
| 5 | MB | % | % |
| 10 | MB | % | % |
Pumpkin faz cache dos chunks já carregados, resultando em nenhum uso extra de RAM além dos dados do jogador e uso mínimo de CPU.
#### Tempo de compilação
Compilando do zero:
**Debug:** sec
**Release:** sec
Recompilação (pumpkin crate):
**Debug:** sec
**Release:** sec
## Vanilla
Release: [1.21.1](https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar)
Argumentos de compilação:
Argumentos de execução: `nogui`
**Tamanho do arquivo:** MB
**Tempo de inicialização:** sec
**Tempo de desligamento:** sec
| Jogadores | RAM | CPU ocioso | CPU Máx |
| --------- | -------------------- | ---------------------------------------- | ------------------ |
| 0 | MB | - % | % |
| 1 | GB | - % | % |
| 2 | GB | - % | % |
| 5 | GB | % | % |
| 10 | GB | % | % |
## Paper
Build: [122](https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/122/downloads/paper-1.21.1-122.jar)
Argumentos de compilação:
Argumentos de execução: `nogui`
**Tamanho do arquivo:** MB
**Tempo de inicialização:** sec
**Tempo de desligamento:** sec
| Jogadores | RAM | CPU ocioso | CPU Máx |
| --------- | ------------------- | -------------------------------------- | ----------------- |
| 0 | GB | - % | % |
| 1 | GB | - % | % |
| 2 | GB | - % | % |
| 5 | GB | % | % |
| 10 | GB | % | % |
## Purpur
Build: [2324](https://api.purpurmc.org/v2/purpur/1.21.1/2324/download)
Argumentos de compilação:
Argumentos de execução: `nogui`
**Tamanho do arquivo:** MB
**Tempo de inicialização:** sec
**Tempo de desligamento:** sec
| Jogadores | RAM | CPU ocioso | CPU Máx |
| --------- | ------------------- | -------------------------------------- | ----------------- |
| 0 | GB | - % | % |
| 1 | GB | - % | % |
| 2 | GB | - % | % |
| 5 | GB | % | % |
| 10 | GB | - % | % |
## Minestom
Commit: [0ca1dda2fe](https://github.com/Minestom/Minestom/commit/0ca1dda2fe11390a1b89a228bbe7bf78fefc73e1)
Argumentos de compilação:
Argumentos de execução:
**Idioma:** Benchmarks executados com Kotlin 2.0.0 (Minestom é feito com Java)
**Tamanho do arquivo:** MB (Biblioteca)
**Tempo de inicialização:** ms
**Tempo de desligamento:** ms
[Usado o código do exemplo de](https://minestom.net/docs/setup/your-first-server)
| Jogadores | RAM | CPU ocioso | CPU Máx |
| --------- | ------------------- | -------------------------------------- | ---------------- |
| 0 | MB | - % | % |
| 1 | MB | - % | % |
| 2 | MB | - % | % |
| 5 | MB | % | % |
| 10 | MB | % | % |
Benchmarks realizados em