Performance & Benchmarks
symtrace is designed for ultra-low overhead execution, delivering instant semantic diffs on individual files while scaling sub-linearly on large multi-file changesets.
Empirical Benchmark Results (v0.3.0)
Section titled “Empirical Benchmark Results (v0.3.0)”Tested on a production release build (LLVM -O3, LTO enabled) against the express repository (d:\rust_playground\express):
| Scenario | Command | Files | AST Nodes | Parse Time | Diff Time | Total Time | Speedup Factor |
|---|---|---|---|---|---|---|---|
| Cold AST Parse | symtrace express HEAD~1 HEAD (Cold) | 2 | 6,011 | 32.21 ms | 0.94 ms | 86.77 ms | Baseline |
| Warm Cache Hit | symtrace express HEAD~1 HEAD (Warm) | 2 | 6,011 | 3.77 ms | 1.24 ms | 22.21 ms | 3.91× faster |
| JSON Output | symtrace express HEAD~1 HEAD --json | 2 | 6,011 | 3.66 ms | 1.00 ms | 18.38 ms | 4.72× faster |
| Working Tree Diff | symtrace express HEAD (Single Commit) | 0 | 0 | 0.01 ms | 0.00 ms | 142.88 ms | N/A |
| Full Test Suite | cargo test --all (166 tests) | N/A | ~65,000 | N/A | N/A | 90.00 ms (0.09s) | 166 tests / 90ms |
Architectural Performance Drivers
Section titled “Architectural Performance Drivers”- Parallel Execution (
rayon) — Files and AST nodes are parsed, fingerprinted, and matched concurrently across all available CPU cores. - Two-Tier AST Caching — Recently parsed trees are cached in a 500-capacity in-memory LRU cache and persistent versioned disk cache (
bincodeserialized). - BLAKE3 SIMD Fingerprinting — Node hashes use SIMD-accelerated BLAKE3 hashing to process thousands of nodes per millisecond.
- Arena Memory Allocation (
bumpalo) — Zero-overhead tree construction avoids thousands of individual heap allocations. - Early Skipping — Identical file blobs across commits are bypassed prior to parsing.
Performance Telemetry
Section titled “Performance Telemetry”Every run calculates precise timing stats visible in both terminal output and JSON telemetry:
Performance Files processed : 2 Nodes compared : 6,011 Parse time : 3.77 ms Diff time : 1.24 ms Total time : 22.21 msResource Tuning Options
Section titled “Resource Tuning Options”For large monorepos or untrusted codebases, resource limits prevent runaway memory or parsing hangs:
symtrace . HEAD~1 HEAD \ --max-file-size 10485760 \ --max-ast-nodes 500000 \ --parse-timeout-ms 5000