Benchmark harnesses and published measurements for TrueForm in C++, Python, and TypeScript.
The repository contains the code, benchmark contracts, result CSVs, metadata, aggregation scripts, and figures behind the public benchmark page. Benchmark corpora are intentionally not distributed here.
Modules follow the order used by the TrueForm documentation. Within Spatial, tree construction precedes the queries that consume the tree.
| Module | Benchmark | C++ | Python | TypeScript | Published results |
|---|---|---|---|---|---|
| Spatial | Spatial tree build | code | code | code | data |
| Spatial | Closest point | code | code | code | data |
| Topology | Connected components | code | code | code | data |
| Topology | Delaunay and CDT | code | code | code | data |
| Geometry | Principal curvatures | code | code | code | data |
| Geometry | ICP registration | code | code | — | data |
| Remesh | Mesh decimation | code | code | code | data |
| Arrangement | Polygon arrangements | code | code | code | data |
| Iso | Isocontours | code | code | code | data |
| Iso | Embedded isocontours | code | code | code | data |
| CSG | Pairwise mesh booleans | code | code | code | data |
| CSG | Variadic mesh booleans | code | code | — | data |
| I/O | Mesh I/O | code | code | code | data |
The language columns link to the harness implementations. A dash means that no published benchmark exists for that language, not that the operation is absent from TrueForm.
definitions/ language-neutral benchmark contracts
cpp/ C++ harnesses and CMake configuration
py/ Python harnesses
ts/ TypeScript and WebAssembly harnesses
results/runs/ immutable CSVs and metadata from published runs
results/derived/ aggregated CSVs used by figures
results/published/ published JSON summaries
results/figures/ figures used by the benchmark page
results/raw/ ignored scratch output produced by general harnesses
viz/ aggregation and figure-generation code
AGENTS.md defines the repository-wide rules. Each language directory has its
own AGENTS.md with build and implementation guidance.
The corpora remain private working data and are not part of this repository. Harnesses accept a caller-supplied manifest or operand list containing paths to local mesh or PSLG files. The benchmark definition states the required input shape and workload; published CSVs retain stable case IDs, sizes, parameters, and validation results without embedding the source geometry.
Published result directories are snapshots, not scratch space. They contain the existing measurements used for the figures; creating this repository did not rerun or alter any benchmark measurement.
See METHODOLOGY.md for timing and comparison rules and VERSIONS.md for the recorded library versions.
Install the dependencies for the language you want to test, prepare a local operand list, and invoke the corresponding harness directly. The orchestration scripts at the repository root show the exact multi-process workflows used for the newer published runs.
For connected components, the publication runner balances both library and case order across three fresh processes and applies one allocator policy to every implementation:
python run_connected_components.py \
--operands /path/to/local-mesh-list.txt \
--output-root results/local/connected-components \
--cpp-build /path/to/cpp/build \
--python /path/to/pythonNothing runs during installation. Do not overwrite results/runs; write local
experiments under results/local or results/raw, both ignored by Git.