Skip to main content

Benchmark Strategy & Results

OpenCore benchmarks are organized around engineering value.

The goal is not to collect impressive microbenchmark numbers. The goal is to answer questions that matter to real multiplayer servers:

  • What does a full command path cost?
  • What does a validated net event cost?
  • What happens under concurrency pressure?
  • How expensive is startup as the controller graph grows?
  • What tick budget is consumed as handlers and work increase?

Benchmark Tiers

Gold

These are the default product-facing benchmarks.

  • full command execution
  • full net event handling
  • RPC paths
  • player lifecycle churn
  • tick budget impact
  • binary transport paths

Startup

These measure framework boot and registration cost.

  • metadata scanning
  • dependency injection setup
  • schema generation
  • bootstrap controller registration

Diagnostic

These are lower-level framework internals.

  • Zod validation internals
  • rate limiter internals
  • access control internals
  • event bus internals
  • metadata and decorator cost

These are useful for maintainers, but they are not the main benchmark story for production servers.

Soak

Longer-running stress scenarios for stability and degradation checks.

Latest Run

Source:

  • Framework version: 1.0.6
  • Report timestamp: 2026-04-01T19:03:36.782Z

Gold Results

Commands

ScenarioThroughputp95
Command Full - Validated (100 players)115.68K ops/sec0.012ms
Command Full - End-to-End (100 players)863.50K ops/sec0.0027ms
Command Full - Concurrent (100 players)121.71 ops/sec14.42ms

Takeaway:

  • validated command handling is cheap
  • contention changes the picture much more than validation itself

Net Events

ScenarioThroughputp95
Net Events - Validated (10 players)9.61K ops/sec0.488ms
Net Events - Full Event (small, 10 players)74.42K ops/sec0.029ms
Net Events - Full Event (medium, 10 players)44.73K ops/sec0.079ms
Net Events - Full Event (large, 10 players)27.68K ops/sec0.113ms

Takeaway:

  • payload size matters
  • validation remains affordable

RPC

ScenarioThroughputp95
RPC - Schema generation simple (200 methods)7.95K ops/sec0.176ms
RPC - Schema generation complex (200 methods)3.06K ops/sec0.400ms

Takeaway:

  • schema complexity is a real startup and registration cost

Player Lifecycle

ScenarioThroughputp95
Full Cycle (500 players)200.55K ops/sec0.0096ms
Concurrent Connections (500 players)108.68K ops/sec0.0046ms
Concurrent Disconnections (500 players)1.83M ops/sec0.00075ms

Takeaway:

  • lifecycle churn scales well
  • connect cost is meaningfully higher than disconnect cost

Tick Budget

ScenarioThroughputp95
Tick - Real setTick (50 handlers)93.12K ops/sec0.021ms
Tick - 5 Handlers (medium workload)18.45K ops/sec0.098ms
Tick - 5 Handlers (heavy workload)2.26K ops/sec0.559ms
Tick - Parallel Execution243.24 ops/sec8.00ms

Takeaway:

  • small handlers are cheap
  • heavy work inside ticks is dangerous
  • parallel tick execution is not a free win

BinaryService

ScenarioThroughputp95
Parse mixed responses (500 ops)1.20M ops/sec0.0011ms
Full round-trip (50 calls)350.12K ops/sec0.0092ms
Serialize large payload (500 ops)2.88K ops/sec0.428ms

Takeaway:

  • binary transport is strong for parse and round-trip
  • large payload serialization is the expensive path

Startup Results

ScenarioThroughputp95 / p99
Bootstrap - 100 controllers205.87 ops/secp95 6.37ms
MetadataScanner - 10 controllers112.61K ops/secp99 21.15μs
DI - Resolve simple service1.92M ops/secp99 1.36μs
SchemaGenerator - batch 50 methods628 ops/secp99 14.17ms

Takeaway:

  • startup remains healthy overall
  • schema generation is the main startup hotspot in this run

What This Means For Servers

  1. The framework is fast on validated happy paths.
  2. The real costs show up under contention, not in single-path microbenchmarks.
  3. Tick work and large payload serialization deserve the most operational attention.
  4. Startup cost is acceptable and mostly scales with schema generation and registration volume.

Notes

  • Results are hardware-dependent.
  • Compare runs relatively, not absolutely.
  • gold should be the main suite used to talk about framework performance.
  • diagnostic is still useful, but it is not the product-facing benchmark story.