34 lines
1.3 KiB
Markdown
34 lines
1.3 KiB
Markdown
# Implementation Spec: Round 19 — Criterion Benchmarks
|
|
|
|
## Goal
|
|
Buktikan klaim "secepat mungkin" (tujuan awal project) dengan benchmark
|
|
nyata. Ukur overhead primitives race-safe vs baseline naif, supaya user
|
|
tahu trade-off dan bisa memilih fitur dengan data.
|
|
|
|
## New files
|
|
|
|
### crates/mytheclipse/benches/primitives.rs
|
|
Criterion bench untuk primitives core (feature `full`):
|
|
- `parallel_map`: throughput 1000 item, concurrency 8 vs sequential loop
|
|
(pakai `black_box`)
|
|
- `retry_ext`: overhead `.retry()` success-first vs 2 retries
|
|
- `rate_limiter`: `RateLimiter::try_acquire` throughput (atomic CAS)
|
|
- `semaphore_pool`: acquire/release cycle throughput — bukti no-leak + low
|
|
overhead
|
|
- `aggregate_error`: `from_results` 1000 results all-ok vs 50% err
|
|
- `shutdown_guard`: new + drop cost
|
|
|
|
## Dependency
|
|
- dev-deps: `criterion = "0.5"` + `[[bench]]` harness = false
|
|
- `harness = false` di Cargo.toml bench section (criterion punya main sendiri)
|
|
|
|
## Verification
|
|
1. `cargo bench -p mytheclipse --bench primitives --all-features` — runs,
|
|
reports times
|
|
2. `cargo build --workspace --all-features` — exit 0
|
|
3. `cargo clippy --workspace --all-features` — 0 new warnings
|
|
4. Spec + commit + push
|
|
|
|
## Notes
|
|
- Criterion 0.5 mendukung MSRV 1.60 — aman untuk rust-version 1.75.
|
|
- Bench tidak jalan di CI (hanya manual) — tidak mempengaruhi pipeline. |