Benchmark Summary
This page summarizes the public benchmark tables that are regenerated by the scripts in this repository. The full command list is in Benchmark Reproduction.
The current tables should be read as implementation evidence, not as a final claim about the fastest persistent-homology software. GUDHI is used as the main external reference because the PH-roadmap benchmark paper compares many packages and makes GUDHI a useful calibrated baseline: Otter et al., 2017.
What Is Compared
The synthetic table compares two MorseFrames paths on the same generated simplicial complexes:
ordinary full-complex persistence on the filtration;
Morse persistence after building a Morse sequence and the corresponding reference/reduction input.
That table is generated in core validation mode with the C++ backend active.
If morseframes.cpp_backend_available() is false when the command is run, the
numbers measure the pure-Python fallback instead and should not replace the
tracked native-backed table.
The native GUDHI-view tables compare three in-process paths on the same
Gudhi::Simplex_tree input:
Direct: MorseFrames through a read-onlySimplex_treeview;Import: copy the GUDHI tree into the compact owning MorseFrames complex, then run MorseFrames;GUDHI: GUDHI persistent cohomology on the originalSimplex_tree.
Direct is the relevant integration direction. Import is useful as a
diagnostic, but it includes a copy that we would not want in an upstream GUDHI
entry point.
How To Read The Ratios
For Std/Morse, values above 1 mean the Morse pipeline is faster than the
ordinary full-complex reducer for that row.
For GUDHI/Direct, values above 1 mean the direct MorseFrames view is faster
end-to-end than GUDHI persistence on the same Simplex_tree. Values below 1
mean GUDHI is faster.
For GUDHI/Reducer, values above 1 mean the Morse reducer kernel is faster
than GUDHI persistence after the Morse input has already been built. This ratio
does not include view construction, sequence construction, or reference-input
construction.
Current Reading
The native-backed synthetic scale table now shows Std/Morse > 1 on the
reported lower-star, plateau, and Rips rows. The clearest stress-test behavior
is on the denser Rips examples, where ordinary reduction becomes more expensive
and the strategy choice matters strongly.
The native GUDHI-view tables are more nuanced. On the reported default and
larger lean runs, the direct f-max, f-min, and same-level paths are faster
than GUDHI end-to-end on the tested rows, while plateau-greedy remains more
mixed. The import path is still much slower because copying the
Simplex_tree dominates. The reducer kernel itself is faster than GUDHI
persistence on all reported native rows, but much of the remaining engineering
work is in pre-reducer construction costs.
The stage-profile table makes that bottleneck explicit. In the quick native profile, roughly three quarters of direct-path time is spent before the reducer starts: read-only view construction plus Morse frame construction. That is why the next optimization work should focus on the view, sequence construction, and reference-input construction rather than only the annotation reducer.
Compact Tables
The tables below are short, rendered summaries of the current public benchmark
fragments. This block is generated by tools/render_benchmark_summary.py.
The full LaTeX fragments remain the source for reproducible benchmark tables in
this software repository; they are not manuscript source.
Synthetic Scale
Family |
Strategy |
Cases |
Avg. simplices |
Critical % |
Morse time |
Std/Morse |
|---|---|---|---|---|---|---|
lower-star |
|
3 |
317.7 |
18.8 |
59.3 us |
1.97 (1.91-1.99) |
lower-star |
|
3 |
317.7 |
18.8 |
86.7 us |
1.34 (1.29-1.35) |
lower-star |
|
3 |
317.7 |
18.8 |
112.9 us |
1.08 (1.03-1.09) |
lower-star |
same-level |
3 |
317.7 |
36.2 |
86.7 us |
1.32 (1.26-1.37) |
plateau |
|
3 |
317.7 |
22.1 |
66.0 us |
1.82 (1.62-1.88) |
plateau |
|
3 |
317.7 |
22.1 |
99.8 us |
1.15 (1.09-1.18) |
plateau |
|
3 |
317.7 |
22.1 |
99.7 us |
1.16 (1.11-1.21) |
plateau |
same-level |
3 |
317.7 |
38.5 |
87.2 us |
1.30 (1.26-1.34) |
Rips |
|
3 |
2,770.3 |
67.3 |
970.3 us |
4.13 (3.97-4.61) |
Rips |
|
3 |
2,770.3 |
67.3 |
1,146.1 us |
3.65 (3.41-3.86) |
Rips |
|
3 |
2,770.3 |
67.3 |
1,361.1 us |
2.91 (2.84-3.20) |
Rips |
same-level |
3 |
2,770.3 |
94.2 |
820.0 us |
5.32 (4.69-5.64) |
Native GUDHI View
This compact table reports the best GUDHI/Direct strategy for each default
30-repeat native case.
Case |
Simplices |
Best direct strategy |
Direct |
GUDHI |
GUDHI/Direct |
GUDHI/Reducer |
|---|---|---|---|---|---|---|
|
2,081 |
same-level |
0.65 ms |
0.88 ms |
1.32 (1.31-1.36) |
4.40 (4.26-4.49) |
|
2,957 |
same-level |
0.99 ms |
1.35 ms |
1.36 (1.33-1.44) |
4.33 (4.22-4.65) |
|
5,891 |
|
1.35 ms |
2.68 ms |
1.91 (1.84-1.99) |
7.41 (7.24-7.59) |
|
13,443 |
|
2.31 ms |
5.07 ms |
2.28 (2.13-2.34) |
116.89 (110.65-120.28) |
Direct-Path Stage Split
Stage group |
Share |
Interpretation |
|---|---|---|
Read-only view construction |
38.2% |
Simplex extraction, boundary lookup, coboundaries, and order arrays. |
Morse frame construction |
37.9% |
Morse sequence plus reference/reduction-input construction. |
Reducer kernel |
24.3% |
Annotation reduction after the Morse input has been built. |
All pre-reducer work |
75.7% |
Current native-adapter bottleneck before the reducer starts. |
Public Artifacts
The main table fragments are tracked in the repository:
Raw CSVs, manuscript prose fragments, manuscript PDFs, and private discussion notes are intentionally kept out of the public package repository.