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.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user