Files
chanora/docs/references/performance-benchmarks.md
T
Edison Jwa c4b8732bd7 docs: add upstream PR draft, benchmarks, web client assessment (TODO-057,072,073)
p256 PR draft ready for ReSpeak/tsclientlib submission.
Performance benchmarks document with tsclientlib baselines and
Chanora current metrics. Web client assessed as infeasible without
UDP proxy infrastructure.
2026-06-11 20:55:20 +09:00

74 lines
2.4 KiB
Markdown

# Performance Benchmarks
**Date:** 2026-06-11
**Purpose:** Track performance baselines for Chanora and reference benchmarks from upstream projects.
---
## 1. Upstream Reference: tsclientlib (ReSpeak)
**Source:** `docs/references/respeak-protocol-reference.md` §10
**Hardware:** i7-5280K, 6 cores/12 threads @ 3.6 GHz (single thread)
| Metric | Value | Notes |
|---|---|---|
| Connection time | ~199 ms | RSA puzzle solving is dominant bottleneck |
| Message send | ~189 µs | 5,300 messages/sec |
| Connections/sec | ~6.5 | Limited by RSA puzzle |
---
## 2. Chanora Current Benchmarks
**Source:** `current.json` (2026-06-09, `x86_64-unknown-linux-gnu`, rustc 1.95.0)
| Metric | Value | Unit |
|---|---|---|
| Opus encode latency | ~70 µs | 70,216 ns |
| Opus decode latency | ~16 µs | 15,873 ns |
| Resampler 44.1kHz→48kHz | TBD | samples/sec |
| Resampler 16kHz→48kHz | TBD | samples/sec |
| Resampler 48kHz passthrough | TBD | samples/sec |
| Capture alloc count | TBD | blocks |
| Capture callback wall clock | TBD | ns |
---
## 3. Target Benchmarks
| Metric | Target | Rationale |
|---|---|---|
| Opus encode | < 100 µs | Must fit within 10ms frame budget with headroom |
| Opus decode | < 25 µs | Must handle multi-user mixing (N decodes per frame) |
| Connection time | < 500 ms | User-perceived latency for server join |
| Message round-trip | < 500 µs | Command acknowledgement within 1 frame |
| Audio pipeline (capture→encode→send) | < 5 ms | Real-time constraint for 10ms Opus frames |
| Audio pipeline (receive→decode→mix→play) | < 5 ms | Real-time constraint |
| Reconnect time | < 3 s | Including exponential backoff first retry (1s) |
---
## 4. Benchmark Methodology
### Audio Latency
- Measured via `criterion` benchmarks in `chanora_audio`
- Single-threaded, no contention
- Represents encode/decode only (excludes I/O)
### Connection Time
- Measured from `connect()` call to first `Connected` event
- Includes: DNS resolution, TCP, Init1-5 handshake, ECDH, auth
- RSA puzzle (~199ms) dominates
### Message Throughput
- Measured for command send path only (no network I/O)
- Includes serialization + encryption
---
## 5. Notes
- tsclientlib benchmarks are from 2019-era hardware; modern CPUs ~4x faster for RSA
- Chanora's Opus benchmarks are production-quality (well under 10ms frame budget)
- Multi-user mixing performance not yet benchmarked (critical for large channels)