Skip to main content

Single-File Stress Benchmarks

Single-file benchmarks focus on large structures and parser-heavy cases that are hidden by directory-level averages. The pinned current benchmark suite uses eight protein-only PDB inputs, 100 sphere points, and 10 threads for the headline results.

Runtime and memory

Single-file runtime bars

Figure 1. Single-file runtime bars. Absolute wall-clock time across the eight curated structures at 10 threads.

Single-file peak RSS bars

Figure 2. Single-file peak RSS bars. Peak memory remains lower for zsasa across the large-structure and parser-stress cases.

Single-file runtime speedup

Figure 3. Single-file runtime speedup ratios. The n× view highlights parser and very-large-structure stress cases.

Single-file RSS reduction

Figure 4. Single-file RSS reduction ratios. Memory ratios are shown alongside absolute RSS bars.

Selected 10-thread results:

StructureModeRuntimeRSSSpeedup vs FreeSASASpeedup vs RustSASA
AF-Q6ZS30-F1, 21,611 atomszsasa f640.026 s9.1 MiB1.99×1.69×
AF-Q6ZS30-F1, 21,611 atomszsasa bitmask f640.034 s11.4 MiB1.54×1.31×
5vyc, 249,168 atomszsasa f640.238 s96.8 MiB2.26×52.3×
5vyc, 249,168 atomszsasa bitmask f640.197 s96.8 MiB2.73×63.0×
8rbs, 164,605 atomszsasa f640.118 s48.1 MiB119.7×1.97×
8rbs, 164,605 atomszsasa bitmask f640.104 s51.9 MiB136.5×2.25×
9fqr, 4,506,416 atomszsasa f644.696 s1,615 MiB40.9×1.86×
9fqr, 4,506,416 atomszsasa bitmask f643.788 s1,616 MiB50.6×2.30×

Dataset

Inputs were normalized to protein-only PDB files for fair comparator runs: hydrogens, alternate conformations, ligands, waters, and non-L-peptide chains were removed; atom and residue identifiers were wrapped into PDB field limits when needed.

StructureRoleAtomsChainsNote
AF-P49792-F10single-medium10,9191AFDB single-chain case
AF-Q6ZS30-F1single-large21,6111AFDB large single-chain case
AF-0000000066638622multi-medium14,6182AFDB-derived two-chain case
AF-0000000065781219multi-large24,1402AFDB-derived two-chain case
3jc8100k-atom107,5003PDB assembly
5vycRustSASA stress249,1684Parser-heavy RustSASA case
8rbsFreeSASA stress164,6055PDB coordinate-overflow parser case
9fqrmaximum-size4,506,41657Largest assembly in this subset

Lahuta is excluded from this suite because the benchmarked SASA command targets AlphaFold-style chain-A inputs and cannot process this mixed multi-chain subset.

Parse versus SASA timing

zsasa records component timings with its native --timing path. The benchmark harness also used timing-enabled comparator builds so parse and kernel effects could be separated.

Single-file parse and SASA timing

Figure 5. Parse time versus SASA-kernel time. On the largest assembly, zsasa f64 spent about 708 ms parsing and 3,754 ms in SASA calculation; bitmask reduced the SASA component to about 2,861 ms.

Selected component timings:

StructureTool/modeParseSASA kernelWall runtime
5vyczsasa f6440.4 ms184.1 ms0.238 s
5vycRustSASA12,204.5 ms349.9 ms12.430 s
8rbszsasa f6423.5 ms84.3 ms0.118 s
8rbsFreeSASA119.4 ms13,467.4 ms14.150 s
9fqrzsasa f64707.8 ms3,753.7 ms4.696 s
9fqrFreeSASA3,486.1 ms167,332.8 ms191.876 s
9fqrRustSASA1,526.6 ms7,100.0 ms8.731 s

Thread scaling

Single-file thread scaling

Figure 6. Runtime versus thread count across the curated single-file subset. Thread scaling depends on structure size and parser behavior; the largest structures benefit most from parallel SASA calculation.

Caveats

  • The 8rbs FreeSASA result primarily exposes PDB fixed-width coordinate overflow and coordinate misreading rather than ordinary FreeSASA kernel scaling.
  • The 5vyc RustSASA result is dominated by parser time.
  • zsasa accepted the raw large-structure inputs directly, but all tools were timed on the same normalized PDB files for fairness.

Evidence source

The values above are exported from zsasa-benchmarks/results/tables/single_file_t10_summary.csv and single_file_thread_scaling.csv.