Sign inSign up

bootgly/bootgly_benchmarks

By bootgly

โ€ขUpdated 1 day ago

๐Ÿ“Š One-command benchmark images โ€” Bootgly vs Swoole, Hyperf, React, Amp, RoadRunner & more

Image
Developer tools
Web servers
0

6.7K

bootgly/bootgly_benchmarks repository overview

โ ๐Ÿ Bootgly โ€” cross-framework benchmark (one command, zero setup)

bootgly/bootgly_benchmarks publishes the Bootgly PHP Frameworkโ  HTTP_Server_CLI TechEmpowerโ  benchmark as self-contained images: each tag bundles Bootgly + one opponent runtime + PostgreSQL (which boots and seeds itself) and runs the whole benchmark from a single docker run โ€” no install, no config, no database setup.

โ ๐Ÿš€ Quick start

Sweep the server-worker count 1 โ†’ 24 for Bootgly vs Swoole on the TechEmpower routes, in a single run, and write the charts to ./results:

docker run --rm -v "$(pwd)/results:/bootgly/storage/tests/benchmarks" \
  bootgly/bootgly_benchmarks:swoole \
  test benchmark HTTP_Server_CLI --opponents=bootgly,swoole \
  --loads=techempower:* --server-workers=1..24 --results=charts

The only requirement is a running Docker daemon. --server-workers=1..24 runs one round per worker count in the same container; --results=charts writes per-round .bench.marks, a Markdown report and native SVG charts (throughput / ratio / latency) to the mounted ./results directory โ€” so you get each framework's peak across the whole sweep, not a single point. Drop the -v mount and --results=charts for a plain printed result.

โ ๐ŸฅŠ Run another opponent

Replace the image tag and the --opponents name:

docker run --rm -v "$(pwd)/results:/bootgly/storage/tests/benchmarks" \
  bootgly/bootgly_benchmarks:<image> \
  test benchmark HTTP_Server_CLI --opponents=bootgly,<opponent> \
  --loads=techempower:* --server-workers=1..24 --results=charts

The <image> tag and the --opponents name are the same word:

<image> ยท <opponent>Opponent runtime in the tag
bootgly(none) โ€” the harness with Bootgly alone, for a baseline run
swooleSwoole extension 6.2.2
workermanWorkerman 5.1.10
reactphpReactPHP โ€” react/http 1.11.0
amphpAMPHP โ€” amphp/http-server 3.4.6
roadrunnerRoadRunner 2025.1.15
hyperfHyperf 3.2.0-rc.1 (on Swoole 6.2.2)
laravel-octaneLaravel Octane 2.17.5 (Laravel 13.16.1, on Swoole 6.2.2)
frankenphpFrankenPHP 1.12.4 (embedded PHP 8.5.8)
expressExpress 5.2.1 (Node.js 22)
bunBun 1.1.43 (Bun.serve)
โ ๐Ÿ”ง Common tweaks
  • Faster sweep: a full 1..24 sweep is thorough but long โ€” step it with --server-workers=1..24:4 (every 4th count), list points with --server-workers=1,4,8,16, or pin one count with --server-workers=15.
  • Static only (skip the DB): --loads=techempower:1,2 (plaintext + JSON).
  • Machine-readable: add --format=json to print only a single JSON document (all rounds, results and artifact paths).
  • Tuning passes straight through: --connections=512 --duration=10.
  • External DB instead of the bundled one: -e DB_HOST=โ€ฆ -e DB_PORT=โ€ฆ -e DB_NAME=โ€ฆ -e DB_USER=โ€ฆ -e DB_PASS=โ€ฆ.

โ ๐Ÿ—๏ธ Build one yourself

Each tag is one build arg on top of the published framework image, and that base is required โ€” there is no default, because bootgly/bootgly publishes no moving stable alias and a default would freeze on a pre-release the day a stable ships:

docker build -f Dockerfile \
  --build-arg BOOTGLY_FRAMEWORK_IMAGE=bootgly/bootgly:<version> \
  --build-arg WITH_SWOOLE=1 \
  -t bootgly_benchmarks:swoole .

Images are linux/amd64: FrankenPHP is pinned by an amd64 digest and RoadRunner and Bun ship amd64 binaries. That is a property of the opponents, not an oversight.

โ ๐Ÿงญ The three Bootgly images

ImageWhat it is
bootgly/bootgly.kitโ the product โ€” framework + Console + Web + the kit entry
bootgly/bootglyโ the framework alone โ€” the base these harness images build FROM
bootgly/bootgly_benchmarksthis harness, one tag per contender

๐Ÿ“Š Full harness, worker sweeps and result charts: https://github.com/bootgly/bootgly_benchmarksโ  ยท ๐Ÿ“š Guide: https://docs.bootgly.com/guide/dockerโ  ยท MIT

Tag summary

Content type

Image

Digest

sha256:5b6ec6fe4โ€ฆ

Size

302 MB

Last updated

1 day ago

docker pull bootgly/bootgly_benchmarks:hyperf