MD Trajectory Benchmarks
Trajectory benchmarks time frame-by-frame SASA over a whole trajectory, including reading the trajectory. All runs use zsasa 0.9.0, 128 sphere points, stride 1, the NACCESS classifier and explicit hydrogens.
Throughput summary#
Trajectory throughput against peak memory
Data table
Native zsasa occupies the top-left corner on every trajectory: the highest frame rate at the lowest peak memory. The Python integrations, zsasa + MDTraj and zsasa + MDAnalysis, reach a similar frame rate, and their memory is set by the Python trajectory loader.
Trajectory throughput and memory at 10 threads
Data table
Per-dataset comparison#
5wvo_C#
| Tool | Runtime (s) | Frames/s | Peak RSS (MiB) | vs MDTraj | vs mdsasa-bolt |
|---|---|---|---|---|---|
| zsasa CLI f64 | 2.09 | 478.3 | 24 | 12.5× | 2.2× |
| zsasa CLI f32 | 2.02 | 495.0 | 24 | 12.9× | 2.2× |
| zsasa CLI bitmask f64 | 0.83 | 1,202.3 | 24 | 31.4× | 5.4× |
| zsasa CLI bitmask f32 | 0.81 | 1,230.4 | 24 | 32.1× | 5.5× |
| zsasa + MDTraj | 1.97 | 507.6 | 211 | 13.3× | 2.3× |
| zsasa + MDTraj bitmask | 0.85 | 1,174.6 | 213 | 30.7× | 5.3× |
| zsasa + MDAnalysis | 2.35 | 425.5 | 193 | 11.1× | 1.9× |
| zsasa + MDAnalysis bitmask | 1.23 | 816.5 | 195 | 21.3× | 3.7× |
| MDTraj | 26.15 | 38.3 | 160 | 1.0× | 0.2× |
| mdsasa-bolt (Rust) | 4.51 | 221.9 | 1,411 | 5.8× | 1.0× |
5wvo_C (1,001 frames, 3,858 atoms): 128 sphere points; zsasa at 10 threads.
6sup_A#
| Tool | Runtime (s) | Frames/s | Peak RSS (MiB) | vs MDTraj | vs mdsasa-bolt |
|---|---|---|---|---|---|
| zsasa CLI f64 | 17.53 | 57.1 | 153 | 53.8× | 3.3× |
| zsasa CLI f32 | 16.98 | 58.9 | 138 | 55.5× | 3.4× |
| zsasa CLI bitmask f64 | 6.95 | 144.0 | 155 | 135.5× | 8.4× |
| zsasa CLI bitmask f32 | 6.79 | 147.5 | 149 | 138.8× | 8.6× |
| zsasa + MDTraj | 17.51 | 57.2 | 1,360 | 53.8× | 3.3× |
| zsasa + MDTraj bitmask | 6.81 | 147.0 | 1,371 | 138.4× | 8.6× |
| zsasa + MDAnalysis | 17.85 | 56.1 | 975 | 52.8× | 3.3× |
| zsasa + MDAnalysis bitmask | 7.27 | 137.6 | 976 | 129.6× | 8.0× |
| MDTraj | 942.47 | 1.1 | 1,002 | 1.0× | 0.1× |
| mdsasa-bolt (Rust) | 58.55 | 17.1 | 11,598 | 16.1× | 1.0× |
6sup_A (1,001 frames, 33,377 atoms): 128 sphere points; zsasa at 10 threads.
5vz0_A#
MDTraj was not measured on this trajectory.
| Tool | Runtime (s) | Frames/s | Peak RSS (MiB) | vs mdsasa-bolt |
|---|---|---|---|---|
| zsasa CLI f64 | 95.99 | 104.2 | 92 | 26.1× |
| zsasa CLI f32 | 93.20 | 107.3 | 88 | 26.9× |
| zsasa CLI bitmask f64 | 38.59 | 259.1 | 94 | 65.0× |
| zsasa CLI bitmask f32 | 37.72 | 265.2 | 91 | 66.5× |
| mdsasa-bolt (Rust) | 2,507.61 | 4.0 | 24,333 | 1.0× |
5vz0_A (10,001 frames, 17,910 atoms): 128 sphere points; zsasa at 10 threads.
The "vs" columns are runtime ratios: the comparator's runtime divided by the row's runtime.
Bitmask rows on these trajectories
The bitmask rows use the single-LUT mode with an experimental bias-correction option, which may change or be removed. Without it, bitmask mode is about 2% below MDTraj on an explicit-hydrogen trajectory, so it is not recommended for such trajectories. See SASA Validation before relying on the bitmask frame rates.
Beyond the core count#
The native trajectory path accepts more worker threads than the machine has cores. The benchmark machine has 10 logical CPUs.
Native zsasa beyond the core count
Data table
Extra workers help a little here: 40 workers are 2% to 11% faster than 10, with the largest gain on the smallest system. Per-frame SASA values were identical at 10, 20 and 40 workers.
Workloads#
| Dataset | Frames | Atoms | Source | Use |
|---|---|---|---|---|
| 5wvo_C | 1,001 | 3,858 | ATLAS | validation and throughput |
| 6sup_A | 1,001 | 33,377 | ATLAS | large-system throughput |
| 5vz0_A | 10,001 | 17,910 | ATLAS | long-trajectory throughput |
Memory interpretation#
zsasa streams trajectory frames and keeps memory close to the current-frame working set. In contrast, the mdsasa-bolt path uses an MDAnalysis front-end that materializes atom data for every frame before the Rust SASA core runs, so its peak memory grows with trajectory length.
Validation pointer#
Agreement with MDTraj on 5wvo_C is covered in SASA Validation.
Evidence source#
The charts and tables on this page are generated from results/tables/md_summary.csv and md_thread_scaling.csv in N283T/zsasa-benchmarks.