Skip to content

Single Request Performance Benchmark ​

Last Updated: February 2026

HTTP write performance with a single sequential request (best case). Configuration: HTTP/2, no auth, Go 1.26.0.

Test Configuration ​

  • Requests: 50,000
  • Concurrency: 1 (sequential, no concurrency)
  • Database: nornic
  • Warmup: 10 requests
  • HTTP/2: Enabled (h2c cleartext mode)
  • Authentication: Disabled (-auth "")
  • Optimizations: Executor caching + Search service reuse enabled
  • Purpose: Measure best-case latency without concurrency overhead

Results ​

Performance Metrics ​

MetricValue
Total Duration5.61 seconds
Throughput8,917.61 req/s
Success Rate100% (50,000/50,000)
Min Latency77.8µs (0.08 ms)
P50 (median)109.0µs (0.11 ms)
P95142.4µs (0.14 ms)
P99165.5µs (0.17 ms)
P99.9279.0µs (0.28 ms)
Max Latency1.35 ms
Average Latency112.0µs (0.11 ms)

Analysis ​

Best-Case Performance ​

With 1 concurrent request, we achieve:

  • Sub-millisecond latency for 99% of requests (P99: 0.17ms)
  • Ultra-low average latency: 112.0µs (0.11ms)
  • Fastest possible request: 77.8µs (0.08ms minimum)
  • Consistent performance: Very tight latency distribution
  • High throughput: 8,917.61 req/s even with sequential requests

Latency Distribution ​

The latency distribution shows excellent consistency:

  • P50-P95 spread: Only 33.4µs (109.0µs → 142.4µs)
  • P95-P99 spread: Only 23.2µs (142.4µs → 165.5µs)
  • 99.9th percentile: Still under 0.3ms (279.0µs)
  • Maximum: 1.35ms (likely due to occasional GC or system activity)

Comparison: 1 vs 100 Concurrent Requests ​

Metric1 Concurrent100 ConcurrentDifferenceSpeedup
Throughput8,917.61 req/s37,450.73 req/s+320%4.2x
Average Latency0.11 ms2.67 ms+2,327%24.3x slower
P50 Latency0.11 ms2.62 ms+2,282%23.8x slower
P99 Latency0.17 ms4.12 ms+2,324%24.2x slower
P99.9 Latency0.28 ms9.16 ms+3,171%32.7x slower

Key Insights ​

  1. Sequential Processing is Fast

    • Single requests achieve sub-millisecond latency (P99: 0.17ms)
    • Fastest possible request: 77.8µs (0.08ms)
    • No concurrency overhead or contention
    • Ideal for low-latency, single-user scenarios
  2. Concurrency Increases Throughput

    • 100 concurrent requests: 4.2x higher throughput (37,451 req/s)
    • Trade-off: Higher latency due to queuing and resource contention
    • Better for high-throughput, multi-user scenarios
    • Memory optimizations improve both throughput and latency
  3. Latency vs Throughput Trade-off

    • 1 concurrent: Best latency (0.11ms avg), lower throughput (8.9K req/s)
    • 100 concurrent: Higher latency (2.67ms avg), best throughput (37.5K req/s)
    • Choose based on use case requirements
  4. Consistent Performance

    • Even at P99.9, single requests stay under 0.3ms (279.0µs)
    • Very predictable latency for sequential workloads
    • Minimal variance in response times
    • Memory optimizations maintain consistency

Use Cases ​

Single Request (1 Concurrent) - Best For: ​

  • Low-latency APIs - When response time is critical
  • Single-user applications - Desktop apps, CLI tools
  • Real-time systems - Where sub-millisecond latency matters
  • Interactive queries - User-facing applications
  • Testing baseline - Understanding best-case performance

High Concurrency (100 Concurrent) - Best For: ​

  • High-throughput APIs - When total requests/sec matters
  • Multi-user applications - Web services, microservices
  • Batch processing - Parallel data ingestion
  • Load testing - Understanding system limits
  • Production workloads - Real-world multi-user scenarios

Conclusion ​

Single request performance demonstrates:

  • Sub-millisecond latency for 99% of requests (P99: 0.17ms)
  • Fastest possible request: 77.8µs (0.08ms)
  • Ultra-consistent response times (low variance)
  • Excellent baseline for understanding system overhead
  • 8,917.61 req/s throughput even with sequential processing
  • Memory optimizations maintain performance (1.4 KB/request overhead)

The system achieves excellent single-request latency (0.11ms average) while maintaining high throughput under concurrency (37.5K req/s with 100 concurrent requests).

This shows NornicDB can handle both:

  • Low-latency use cases (single requests: <0.3ms P99.9, 77.8µs minimum)
  • High-throughput use cases (concurrent requests: 37.5K req/s with optimizations)
Analytics privacy