{"meta":{"version":"0.9.4","measured":"2026-09-26","machine":"8 cores @ 3.6 GHz, 32 GB, Linux, GCC 13, -O2, asserts off","method":"median of 7 runs after one warm-up; wall time excludes file I/O","metrics":{"tris_in":"triangles in","tris_out":"triangles out","t1_s":"decimation, 1 thread (s)","t8_s":"decimation, 8 threads (s)","mem_mb":"peak RSS (MB)","collapses_per_s":"collapses per second"}},"decimation":[{"name":"terrain-tile","tris_in":4010000,"tris_out":401000,"t1_s":12.1,"t8_s":9.4,"mem_mb":392,"collapses_per_s":192000,"shape":"heightfield, one open boundary, no sharp edges"},{"name":"scan-torso","tris_in":2004320,"tris_out":200432,"t1_s":5.9,"t8_s":4.6,"mem_mb":192,"collapses_per_s":196000,"shape":"photogrammetry scan, 14 boundary loops, speckle"},{"name":"statue-scan","tris_in":1198600,"tris_out":119860,"t1_s":3.4,"t8_s":2.7,"mem_mb":118,"collapses_per_s":199000,"shape":"closed, genus 3, uniform triangle size"},{"name":"turbine-blade","tris_in":620400,"tris_out":62040,"t1_s":1.72,"t8_s":1.35,"mem_mb":62,"collapses_per_s":207000,"shape":"closed, genus 0, two thin trailing edges"},{"name":"bracket-cad","tris_in":148220,"tris_out":14822,"t1_s":0.39,"t8_s":0.31,"mem_mb":16,"collapses_per_s":215000,"shape":"tessellated solid, genus 2, almost all vertices on an arris"},{"name":"bracket-cad (ridges locked)","tris_in":148220,"tris_out":31440,"t1_s":0.28,"t8_s":0.23,"mem_mb":16,"collapses_per_s":214000,"shape":"same part, sharp edges pinned; stops at 21%"}],"operations":[{"op":"Stats::of","t_s":0.19,"mem_mb":52,"note":"one edge table, discarded on return"},{"op":"weld_vertices, tol 1e-5","t_s":0.44,"mem_mb":68,"note":"uniform grid of the tolerance cell size"},{"op":"remove_degenerate","t_s":0.07,"mem_mb":38,"note":"one pass plus a compaction"},{"op":"orient_consistently","t_s":0.26,"mem_mb":60,"note":"flood fill per component"},{"op":"fill_holes, 14 loops","t_s":0.11,"mem_mb":38,"note":"largest loop 214 edges"},{"op":"RidgeExtractor, 42deg","t_s":0.63,"mem_mb":74,"note":"emitted 1840 polylines"},{"op":"hierarchy build","t_s":0.31,"mem_mb":60,"note":"median split, 8 tris per leaf"},{"op":"SelfIntersection::find","t_s":2.42,"mem_mb":72,"note":"2 pairs; 0.51 s on 8 threads"},{"op":"Remesher, 5 iterations","t_s":38.0,"mem_mb":148,"note":"with projection; 23 s without"}],"io":[{"format":"PLY binary","size_mb":36.1,"read_s":0.21,"write_s":0.15,"throughput_mb_s":172},{"format":"PLY ascii","size_mb":148,"read_s":3.9,"write_s":2.8,"throughput_mb_s":38},{"format":"STL binary","size_mb":100,"read_s":0.48,"write_s":0.37,"throughput_mb_s":208},{"format":"OBJ ascii","size_mb":131,"read_s":3.6,"write_s":3.2,"throughput_mb_s":36}]}