Skip to content

bench: add v0.9 benchmark suite - #27

Merged
zuudevs merged 15 commits into
mainfrom
benchmarks/v0.9-suite
Sep 15, 2026
Merged

zuudevs merged 15 commits into
mainfrom
benchmarks/v0.9-suite

Conversation

@zuudevs

@zuudevs zuudevs commented Sep 15, 2026

Copy link
Copy Markdown
Owner

Summary

Adds the v0.9 benchmark infrastructure and the five benchmark areas required by the roadmap.

Benchmark infrastructure

  • adds opt-in CPP_REQUEST_BUILD_BENCHMARKS (default OFF)
  • reuses/pins Google Benchmark v1.9.5 as a build-only development dependency
  • disables Google Benchmark's own tests/install path
  • adds aggregate cpp_request_benchmarks target
  • adds cpp_request_benchmark_smoke target that runs all benchmark executables with a short minimum time

Benchmark coverage

  1. request serialization
    • POST request with headers, raw query, appended encoded query parameters, and multiple body sizes
  2. response/header parsing
    • HTTP/1.1 response with 24 custom headers and multiple body sizes
  3. chunked decoding
    • 4 KiB chunks across 4 KiB, 64 KiB, and 1 MiB decoded payloads
  4. end-to-end loopback client overhead
    • local-only steady-state requests with 32-byte and 4 KiB responses
  5. connection reuse vs reconnect
    • persistent Client keep-alive path compared directly with a fresh Client/TCP connection per request

Loopback benchmark server

  • native local TCP only
  • no public network dependency
  • supports sequential requests on retained HTTP/1.1 connections
  • supports repeated reconnects for comparison benchmarks

CI

Adds a dedicated Release-only benchmark smoke matrix for Ubuntu, Windows, and macOS. Normal six-job build/test CI keeps benchmarks disabled, so ordinary development builds do not pay the Google Benchmark dependency cost.

The benchmark workflow only triggers for benchmark/source/header/CMake changes relevant to the measurements.

Scope

This PR establishes benchmark executables and smoke verification. It does not make performance claims or tune implementation based on unmeasured assumptions; detailed result reporting can be done after the suite is merged and run on stable hardware.

@zuudevs
zuudevs merged commit 0a3123e into main Sep 15, 2026
9 checks passed
@zuudevs
zuudevs deleted the benchmarks/v0.9-suite branch September 15, 2026 01:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant