Benchmarks
These pages report the zsasa 0.9.0 benchmark suite: agreement with established SASA implementations, proteome-scale batch throughput, large single structures, and MD trajectories. Every chart and table is generated from the result tables of zsasa-benchmarks, archived at doi:10.5281/zenodo.23306698.
Numbers differ from the preprint
The current bioRxiv preprint reports the zsasa 0.6.0 suite. These pages use the 0.9.0 rerun, so headline values differ slightly from that version; a revision of the preprint based on the 0.9.0 suite is in preparation. The 0.6.0 archive remains available at doi:10.5281/zenodo.20577561.
Throughput against peak memory
Data table
Hover or focus a mark to read its values. Each chart also has a data table underneath it.
Benchmark suites#
| Suite | Question | Data | Readouts |
|---|---|---|---|
| Validation | Does zsasa agree with established implementations? |
4,370 E. coli AFDB structures; 1,001 frames of 5wvo_C | Signed relative difference, R² |
| Batch throughput | How fast is a whole directory? | E. coli, Human and SwissProt AFDB | Structures/s, peak RSS, thread scaling |
| Single-file stress tests | How does one large structure behave? | 8 structures, 10,919 to 4,506,416 atoms | Runtime, peak RSS, thread scaling |
| MD trajectories | How fast is frame-by-frame SASA? | 5wvo_C, 6sup_A, 5vz0_A | Frames/s, peak RSS |
Reading the charts#
- Colour is the tool. Yellow is
zsasa. Blue is the reference implementation of each suite (FreeSASA, MDTraj), magenta the Rust implementation (RustSASA, mdsasa-bolt), and green the remaining comparator (Lahuta, PDBTools.jl). - Marker shape is the mode. Circles are exact Shrake–Rupley runs and diamonds are bitmask runs; dashed lines also mark bitmask. Hollow markers are f32. Squares and triangles mark the Python integrations and the mmCIF parser paths, as named in each legend.
- Whiskers show one standard deviation over three measured runs.
- Speedup is comparator runtime divided by
zsasaruntime, so higher is better. - Peak RSS is the peak resident set size of the whole process.
Exact f64 and f32 modes aim to reproduce matched Shrake–Rupley outputs. Bitmask mode is a throughput-oriented approximation; its measured difference from FreeSASA is on the validation page.
Test environment#
All runs were collected on one consumer laptop:
| Item | Value |
|---|---|
| Machine | MacBook Pro (Mac16,1) |
| Chip | Apple M4 |
| Cores | 10 total: 4 performance + 6 efficiency |
| Memory | 32 GB |
| OS | macOS 26.2 |
| Timing | hyperfine 1.20.0, three measured runs per condition, --prepare sync |
| Tool pinning | Nix for native tools, uv for Python dependencies |
zsasa version |
0.9.0; 0.11.0 for the mmCIF batch rows and one SwissProt row, named as such |
Batch FreeSASA timings use a freesasa_batch wrapper, because upstream FreeSASA has no native directory mode. The pinned comparator builds did not change between zsasa releases, so their batch timings are retained from the 0.6.0 session on the same machine; validation, single-file and trajectory runs were repeated for all tools.
Evidence sources#
- Benchmark harness and result tables:
N283T/zsasa-benchmarks - Archived results: doi:10.5281/zenodo.23306698
- Preprint: Nagae and Tomii, bioRxiv (2026)
- Feature comparison: Comparison with Other Tools