Tools for benchmarking various game panels.
  • TypeScript 100%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Robert Jansen 1bf9fe5f24
Some checks are pending
Lint / Lint (push) Waiting to run
add all target for benchmarks, allow outputting results into dir
2026-07-21 13:54:41 +02:00
.github add lint ci 2026-07-16 14:59:52 +02:00
docker add featherpanel and hydrodactyl 2026-07-16 19:17:56 +02:00
src add all target for benchmarks, allow outputting results into dir 2026-07-21 13:54:41 +02:00
.gitignore upload code 2026-07-16 14:57:39 +02:00
biome.json upload code 2026-07-16 14:57:39 +02:00
LICENSE upload code 2026-07-16 14:57:39 +02:00
package.json upload code 2026-07-16 14:57:39 +02:00
pnpm-lock.yaml upload code 2026-07-16 14:57:39 +02:00
pnpm-workspace.yaml upload code 2026-07-16 14:57:39 +02:00
README.md add all target for benchmarks, allow outputting results into dir 2026-07-21 13:54:41 +02:00
tsconfig.json upload code 2026-07-16 14:57:39 +02:00

Calagopus Logo

Benchmarking

TypeScript License GitHub issues GitHub stars Discord

benchmarking is the benchmarking suite for the Calagopus platform and various other Game panels, written in TypeScript. It is used to measure and track the performance of Calagopus services under load.

Usage

Each panel is booted from its own Docker Compose stack, swept across a set of CPU-quota variants, and driven with oha while container CPU/memory are sampled. Requires docker, the docker compose plugin, and oha on PATH.

Pick a target as the first argument (defaults to calagopus):

pnpm run bench calagopus    # bench the Calagopus panel
pnpm run bench pterodactyl  # bench the Pterodactyl panel
pnpm run bench pelican      # bench the Pelican panel
pnpm run bench pufferpanel  # bench the PufferPanel panel
pnpm run bench featherpanel # bench the FeatherPanel panel
pnpm run bench hydrodactyl  # bench the Hydrodactyl panel
pnpm run bench all          # bench every panel in series

pnpm run bench pterodactyl --compare calagopus  # bench Pterodactyl and Calagopus in series, then compare results
pnpm run bench pufferpanel --compare calagopus  # bench PufferPanel and Calagopus in series, then compare results

pnpm run bench pterodactyl --compare pelican  # bench Pterodactyl and Pelican in series, then compare results (you will see a funny result)

pnpm run bench all --output-dir results  # bench every panel and write results/<target>.json for each

With --output-dir <dir> (short -o) each suite report is written to <dir>/<target>.json, pretty-printed, as soon as that suite finishes. The directory is created if it does not exist. This works for single, --compare, and all runs. When running all, a failing panel does not abort the sweep: the remaining panels still run, the failure is reported at the end, and the process exits non-zero.

Contributing

You are free to contribute new panels, benchmarks, and improvements to the benchmarking suite. Please try to follow the existing code style and structure, and ensure that your contributions are tested.