Benchmarks | C++

Overview

Performance comparisons against VTK, CGAL, libigl, FCL, and nanoflann.

TrueForm enables real-time geometric operations on million-polygon meshes. On a pair of 1M-polygon meshes, boolean union completes in 32ms and intersection curve extraction in 11ms. Try it live in your browser →

These benchmarks quantify performance against established libraries across spatial indexing, topology analysis, intersection computation, and mesh cutting.

Experimental Setup

PropertyValue
CPUApple M4 Max (12P + 4E cores)
Memory64 GB
CompilerClang with -O3 -march=native
Test DataStanford Dragon, 58K–1M polygons (contains non-manifold flaps)
Sampling10–1000 evaluations per configuration

Construction benchmarks use 10 runs; query benchmarks use 1000. All libraries use parallel execution where available. Reported times are mean wall-clock measurements. Source code →

Summary

Results at 1M polygons:

OperationInputTimeSpeedupBaselineTrueForm
Boolean Union2 × 1M32 ms76×CGAL Simple_cartesian<double>reduction diagrams, double
Mesh–Mesh Curves2 × 1M11 ms150×CGAL Simple_cartesian<double>reduction diagrams, double
Self-Intersection2 × 1M179 ms35×libigl EPECK (GMP/MPFR)reduction diagrams, double
Isocontours1M, 16 cuts4.2 ms40×VTK vtkContourFilterreduction diagrams, float
Connected Components1M16 ms11×CGALparallel union-find
Boundary Paths1M12 ms12×CGALHierholzer's algorithm
k-NN Query500K1.7 µsnanoflann k-d treeAABB tree
Mesh–Mesh Distance2 × 1M0.2 msFCL OBBRSS<double>OBBRSS tree
To learn more about the reduction diagrams and the theoretical foundations of trueform, see Research Foundation. For formal proofs, see our publications.

Detailed Results

Explore full benchmark charts and scaling analysis for each module:

Spatial

AABB tree construction, k-NN queries, and mesh–mesh distance.

Topology

Connected component extraction and boundary path detection.

Intersect

Isocontour extraction and mesh–mesh intersection curves.

Cut

Boolean operations, self-intersection detection, and curve embedding.

Running Benchmarks

brew install boost gmp mpfr libccd tbb
cmake -B build -DBUILD_BENCHMARKS=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --target benchmarks
./build/run-benchmarks

Results are written to build/results/. Use consolidate_results.py to merge per-library CSVs.