Performance Benchmark

Real-world performance metrics measured on Apple Silicon

Units Reference

RPS

Requests Per Second

ms

Milliseconds (1/1,000 second)

µs

Microseconds (1/1,000,000 second)

MB/s

Megabytes Per Second

Single Instance Performance

Mocklantis is a desktop application running as a single instance on your local machine. All benchmark results below are achieved without any clustering, load balancing, or horizontal scaling. Just one app, one process, 166,000+ requests per second.

Test Environment

  • Application: Mocklantis Desktop (single instance)
  • Platform: macOS (Darwin 25.1.0)
  • CPU: Apple Silicon
  • Tool: wrk (HTTP benchmarking tool)
  • Duration: 10-15 seconds per test
  • Version: Mocklantis 1.0.0

Simple Endpoint

Basic GET request returning a 35-byte JSON response. No template processing, no path variables.

Request / Response

Request

GET /test HTTP/1.1
Host: localhost:8087

Response (35 bytes)

HTTP/1.1 200 OK
Content-Type: application/json

{"message":"Hello from Mocklantis"}
ConnectionsThreadsRequests/secAvg LatencyMax LatencyTransfer/sec
102117,73673 µs (0.073 ms)2.86 ms16.06 MB/s
504166,394246 µs (0.246 ms)1.22 ms22.69 MB/s
1004137,655699 µs (0.699 ms)13.41 ms18.77 MB/s
2008130,1851.60 ms43.55 ms17.75 MB/s

Peak Performance (Simple)

166,394

Requests per second

  • Optimal Configuration: 50 connections, 4 threads
  • Average Latency: 246 µs (0.246 ms)
  • Max Latency: 1.22 ms
  • Total Requests: 2,512,582 in 15 seconds
  • Zero Errors

Complex Endpoint

POST request with path variables, query parameter validation, request body matching, and 30+ random variable processing.

Endpoint Configuration

Full Path

POST /api/v1/users/{userId}/orders/{orderId}?status={PENDING,ACCEPTED,CANCELED}&limit={number}&sort=date
  • Path Variables: userId, orderId
  • Query Parameters: status (enum), limit (number), sort (string)
  • Request Body: ~400 bytes JSON with random variables
  • Response Body: ~900 bytes JSON with 30+ random variables

Request / Response in Mocklantis

Templates with random variables that get processed on each request

Request in Mocklantis

{
  "customer": {
    "id": "{{random.number(1000,9999)}}",
    "email": "{{random.email}}",
    "name": "{{random.name}}"
  },
  "items": [
    {
      "productId": "{{random.alphanumeric(8)}}",
      "name": "{{random.string(10)}}",
      "quantity": "{{random.number(1,5)}}",
      "price": "{{random.double(10.00,999.99)}}"
    },
    {
      "productId": "{{random.alphanumeric(8)}}",
      "name": "{{random.string(10)}}",
      "quantity": "{{random.number(1,5)}}",
      "price": "{{random.double(10.00,999.99)}}"
    }
  ],
  "shipping": {
    "method": "{{random.string(8)}}",
    "address": "{{random.string(20)}}"
  },
  "payment": {
    "method": "{{random.string(6)}}",
    "currency": "{{random.string(3)}}"
  }
}

Response in Mocklantis

{
  "orderId": "{{random.uuid}}",
  "customerId": "{{random.number(1000,9999)}}",
  "status": "created",
  "customer": {
    "name": "{{random.name}}",
    "email": "{{random.email}}",
    "phone": "{{random.phone}}",
    "ip": "{{random.ip}}"
  },
  "order": {
    "total": "{{random.double(50.00,999.99)}}",
    "tax": "{{random.double(5.00,99.99)}}",
    "discount": "{{random.double(0.00,50.00)}}",
    "itemCount": "{{random.number(1,10)}}",
    "trackingCode": "{{random.alphanumeric(12)}}"
  },
  "shipping": {
    "estimatedDays": "{{random.number(1,14)}}",
    "carrier": "{{random.string(8)}}",
    "cost": "{{random.double(5.00,30.00)}}"
  },
  "items": [
    {
      "sku": "{{random.alphanumeric(8)}}",
      "name": "{{random.string(12)}}",
      "price": "{{random.double(10.00,199.99)}}",
      "qty": "{{random.number(1,5)}}"
    }
  ],
  "createdAt": "{{random.date}}",
  "expiresAt": "{{random.date}}"
}

Request / Response Example

Actual generated values from a real request.

Note: Due to random variable templating, every request generates unique values. Request and response bodies are never static - each of the 142,000+ requests per second receives dynamically generated data.

Request Example

POST /api/v1/users/ZKjg/orders/a0DS
    ?status=ACCEPTED&limit=20&sort=date
Content-Type: application/json

{
  "customer": {
    "id": 4797,
    "email": "[email protected]",
    "name": "David Moore"
  },
  "items": [
    {
      "productId": "dpuvzt2s",
      "name": "w9czgirbz9",
      "quantity": 4,
      "price": 683.95
    },
    {
      "productId": "ewiracb1",
      "name": "hc7f4xo507",
      "quantity": 2,
      "price": 815.13
    }
  ],
  "shipping": {
    "method": "mc97fm6l",
    "address": "wqvc2sr28eiqkht0ogiy"
  },
  "payment": {
    "method": "jmacte",
    "currency": "22l"
  }
}

Response Example

HTTP/1.1 200 OK
Content-Type: application/json

{
  "orderId": "a17f6553-c695-4188-85bd-7cc9871f7bbf",
  "customerId": 4279,
  "status": "created",
  "customer": {
    "name": "Mary Johnson",
    "email": "[email protected]",
    "phone": "+33-7-31-98-24-43",
    "ip": "172.16.111.26"
  },
  "order": {
    "total": 153.15,
    "tax": 66.99,
    "discount": 47.26,
    "itemCount": 8,
    "trackingCode": "a0gqdb2nox74"
  },
  "shipping": {
    "estimatedDays": 13,
    "carrier": "rhm3663f",
    "cost": 25.02
  },
  "items": [
    { "sku": "cnrzym3d", "price": 148.06, "qty": 1 },
    { "sku": "t4ihqrcv", "price": 178.07, "qty": 4 }
  ],
  "createdAt": "2029-01-22",
  "expiresAt": "2027-03-01"
}

Processing Per Request

  • Path variable extraction (2 variables: userId, orderId)
  • Query parameter validation (3 params: status, limit, sort)
  • Request body matching (~400 bytes JSON)
  • Response template processing (30+ random variables)
  • Response generation (~900 bytes JSON with dynamic data)
ConnectionsThreadsRequests/secAvg LatencyMax LatencyTransfer/sec
10286,382105 µs (0.105 ms)4.47 ms72.98 MB/s
504142,391298 µs (0.298 ms)3.60 ms120.30 MB/s
1004111,0891.05 ms130.71 ms93.86 MB/s
200855,3003.86 ms123.16 ms46.72 MB/s

Peak Performance (Complex)

142,391

Requests per second

  • Optimal Configuration: 50 connections, 4 threads
  • Average Latency: 298 µs (0.298 ms)
  • Max Latency: 3.60 ms
  • Total Requests: 1,438,089 in 10 seconds
  • Zero Errors

Feature Overhead

Even with all features enabled (path variables, query validation, body matching, 30+ random variables), Mocklantis delivers 142K requests per second - only 15% slower than the simple endpoint.

FeatureSimpleComplex
Path Variables02
Query Params03 (validated)
Request BodyNone~400 bytes
Response Body35 bytes~900 bytes
Random Variables030+
Requests/sec166,394142,391

Performance Comparison

How Mocklantis compares to other mock server solutions (simple endpoint benchmark).

ToolRequests/secRuntime
Mocklantis166,000+Rust (Native)
Other Provider A~95,000Java
Other Provider B~10-15KJava
Other Provider C~3-5KNode.js
Other Provider D~2-3KNode.js

* Competitor numbers are approximate based on community benchmarks. Results may vary based on hardware and configuration.

Why So Fast?

Rust + Hyper

Built with Rust and Hyper - the same async HTTP stack powering Cloudflare's edge network. Zero-cost abstractions, no garbage collection pauses.

Sub-millisecond Latency

Average response time of 246 µs (0.246 ms) means your tests complete faster. No more waiting for slow mock servers.

No-Restart Architecture

Configuration changes take effect immediately without restarting the server or dropping connections. Dynamic routing with catch-all handlers.

Rock Solid Stability

2.5 million requests served with zero errors. Low standard deviation means predictable, consistent performance.

Methodology

All tests were performed using wrk, a modern HTTP benchmarking tool:

wrk -t4 -c50 -d15s http://localhost:8087/test

-t4    : 4 threads
-c50   : 50 concurrent connections
-d15s  : 15 second duration

Each configuration was tested multiple times to ensure consistency. Benchmarks performed on local machine. Production results may vary based on network conditions and hardware.