CodexaCodexa

Benchmarks

How Codexa Core's HTTP layer compares to raw Deno.serve, Oak, Hono, and Express on the same three endpoints.

Three identical endpoints, GET /hello, GET /users/:id, and POST /users with a validated body, implemented once per framework and load tested with the same settings. Codexa Core is loaded from its published JSR package (@codexa/core@1.0.7), the same way a real consumer would install it, not from local source. Every number below is the median of three independent full runs, not a single sample. Numbers are from one developer machine and will vary by hardware, treat them as directional. See Reproducing this to run them yourself.

Deno (no framework)fastest
29,213 req/s
Hono (Deno)
28,282 req/s
Codexa Core
25,134 req/s
Oak (Deno)
20,972 req/s
Express (Node)
13,297 req/s

What this shows

  • Raw Deno.serve is the ceiling, no routing, no validation library overhead beyond Zod, just a manual if chain.
  • Codexa Core lands in the same tier as Hono on both GET routes (within about 10-15% of the raw ceiling), and clearly ahead of Oak and Express on all three endpoints, while adding a plugin system, a radix tree router, typed cross-plugin services, and request lifecycle hooks that the raw baseline has none of.
  • Oak, Hono, and Express are included as the comparison points most people already have intuition for, Oak and Hono as established Deno frameworks, Express as the most familiar reference point overall.

Methodology

  • Load generator: autocannon, 50 concurrent connections, 10 second measurement window per endpoint per framework, a 3 second warmup run discarded before each measurement.
  • Repetition: each framework/endpoint combination was measured across 3 independent full runs (fresh process each time); the number shown is the median of those 3, not a single sample.
  • Endpoints: identical route shapes and identical Zod validation schema across every framework, so the comparison is routing and framework overhead, not differing amounts of work per request.
  • Isolation: each framework runs as its own process on its own port, benchmarked one at a time, never concurrently with another framework under test.
  • What is not measured: cold start time, memory usage, and behavior under sustained production load over hours are all out of scope here, this is a short-run throughput and latency snapshot only.

Reproducing this

The harness (one Deno file covering Codexa Core, raw Deno.serve, Oak, and Hono selected by an environment variable, one Express file, and a Node orchestrator script) is kept separately, outside both the codexa-core and codexa-core-docs repositories, so neither repo has to carry framework server code alongside its own source. Both repos track only the generated output, at benchmarks/results/results.json and results.md, which is what this page reads.

On this page