Skip to content

repair

Benchmarks of ordito.repair against every library that computes the same thing. Each chart shows the time of every library relative to ordito on CUDA (1x, in green): a longer bar took longer. The table under each chart lists every input the function was measured on. See Benchmarks for how to read and reproduce these numbers.

Measured on GPU: NVIDIA GeForce RTX 5090 · CPU: Intel Xeon w7-2495X

Summary

0.1x1x10x100x1000xordito (CUDA): the reference, 1xordito (CUDA)1xMeshLib: 23x ordito's time, geometric mean over 11 functions; slower than ordito in 9MeshLib23x (11)PyMeshFix: 74x ordito's time, geometric mean over 1 functions; slower than ordito in 1PyMeshFix74x (1)Open3D: 92x ordito's time, geometric mean over 4 functions; slower than ordito in 4Open3D92x (4)trimesh: 142x ordito's time, geometric mean over 5 functions; slower than ordito in 5trimesh142x (5)libigl: 160x ordito's time, geometric mean over 4 functions; slower than ordito in 4libigl160x (4)MeshLab: 167x ordito's time, geometric mean over 7 functions; slower than ordito in 7MeshLab167x (7)PyVista: 277x ordito's time, geometric mean over 2 functions; slower than ordito in 2PyVista277x (2)
Time relative to ordito (CUDA), geometric mean over the repair functions both implement; in parentheses, the number of functions. Log scale. Runs stopped at the time limit are left out.
Values
Library Time relative to ordito Functions compared ordito faster in
MeshLib 23x 11 9
PyMeshFix 74x 1 1
Open3D 92x 4 4
trimesh 142x 5 5
libigl 160x 4 4
MeshLab 167x 7 7
PyVista 277x 2 2

make_solid

0.1x1x10x100x1000xordito (CUDA): 3.34 ms, 1x ordito's timeordito (CUDA)1x · 3.34 msPyMeshFix: 484.03 ms, 145x ordito's timePyMeshFix145x · 484.03 ms
bunny (69 451 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 3.34 ms 1x
PyMeshFix 484.03 ms 145x
All inputs
Input ordito (CUDA) PyMeshFix
bunny_decimated 3.95 ms 147.32 ms
bunny 3.34 ms 484.03 ms

remove_small_components

0.1x1x10x100x1000xordito (CUDA): 219.5 µs, 1x ordito's timeordito (CUDA)1x · 219.5 µsMeshLab: 39.27 ms, 179x ordito's timeMeshLab179x · 39.27 msOpen3D: 76.93 ms, 350x ordito's timeOpen3D350x · 76.93 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 219.5 µs 1x
MeshLab 39.27 ms 179x
Open3D 76.93 ms 350x
All inputs
Input ordito (CUDA) MeshLab Open3D
sphere_med 219.5 µs 39.27 ms 76.93 ms
parts_64 162.6 µs 35.27 ms 75.24 ms
parts_1024 169.5 µs 35.13 ms 73.39 ms

remove_non_manifold_faces

0.1x1x10x100x1000xordito (CUDA): 119.2 µs, 1x ordito's timeordito (CUDA)1x · 119.2 µsMeshLab: 34.30 ms, 288x ordito's timeMeshLab288x · 34.30 ms
sphere_med (81 920 faces) · extra=0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 119.2 µs 1x
MeshLab 34.30 ms 288x
All inputs
Input ordito (CUDA) MeshLab
sphere_med extra=0 119.2 µs 34.30 ms
sphere_med extra=1024 182.4 µs 40.37 ms

split_non_manifold_vertices

0.1x1x10x100x1000xordito (CUDA): 186.0 µs, 1x ordito's timeordito (CUDA)1x · 186.0 µsMeshLib: 10.55 ms, 57x ordito's timeMeshLib57x · 10.55 mslibigl: 99.31 ms, 534x ordito's timelibigl534x · 99.31 ms
sphere_med (81 920 faces) · extra=0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 186.0 µs 1x
MeshLib 10.55 ms 57x
libigl 99.31 ms 534x
All inputs
Input ordito (CUDA) libigl MeshLib
sphere_med extra=0 186.0 µs 99.31 ms 10.55 ms
sphere_med extra=1024 181.5 µs 138.60 ms 24.93 ms

remove_unreferenced_vertices

0.1x1x10x100x1000x10000xordito (CUDA): 69.9 µs, 1x ordito's timeordito (CUDA)1x · 69.9 µsOpen3D: 8.01 ms, 115x ordito's timeOpen3D115x · 8.01 mslibigl: 42.33 ms, 605x ordito's timelibigl605x · 42.33 msMeshLib: 73.36 ms, 1049x ordito's timeMeshLib1049x · 73.36 ms
dragon (871 414 faces) · unreferenced=0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 69.9 µs 1x
Open3D 8.01 ms 115x
libigl 42.33 ms 605x
MeshLib 73.36 ms 1049x
All inputs
Input ordito (CUDA) libigl MeshLib Open3D
sphere_small unreferenced=0 65.7 µs
sphere_small unreferenced=1 93.2 µs
bunny_decimated unreferenced=0 58.0 µs 176.3 µs 8.23 ms 86.6 µs
bunny_decimated unreferenced=1 88.6 µs 192.3 µs 8.27 ms 106.1 µs
bunny unreferenced=0 64.9 µs 887.7 µs 10.94 ms 473.1 µs
bunny unreferenced=1 87.6 µs 920.4 µs 10.46 ms 597.3 µs
dragon unreferenced=0 69.9 µs 42.33 ms 73.36 ms 8.01 ms
dragon unreferenced=1 68.3 µs 36.00 ms 75.10 ms 13.98 ms
happy_buddha unreferenced=0 78.0 µs 47.88 ms 92.50 ms 10.83 ms
happy_buddha unreferenced=1 84.4 µs 53.58 ms 94.87 ms 31.00 ms
lucy unreferenced=0 1.79 ms 2.143 s 4.186 s 737.48 ms
lucy unreferenced=1 2.10 ms 2.370 s 4.203 s 1.132 s

remove_duplicated_vertices

0.1x1x10x100x1000x10000xordito (CUDA): 218.1 µs, 1x ordito's timeordito (CUDA)1x · 218.1 µsOpen3D: 16.42 ms, 75x ordito's timeOpen3D75x · 16.42 msPyVista: 25.66 ms, 118x ordito's timePyVista118x · 25.66 msMeshLib: 31.33 ms, 144x ordito's timeMeshLib144x · 31.33 msMeshLab: 221.69 ms, 1017x ordito's timeMeshLab1017x · 221.69 ms
sphere_med (81 920 faces) · epsilon=0.0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 218.1 µs 1x
Open3D 16.42 ms 75x
PyVista 25.66 ms 118x
MeshLib 31.33 ms 144x
MeshLab 221.69 ms 1017x
All inputs
Input ordito (CUDA) MeshLab MeshLib Open3D PyVista
sphere_med epsilon=0.0 218.1 µs 221.69 ms 31.33 ms 16.42 ms 25.66 ms
sphere_med epsilon=1e-06 312.7 µs 288.20 ms 31.20 ms 16.44 ms 40.21 ms

reverse_winding

0.1x1x10x100x1000x10000xordito (CUDA): 22.1 µs, 1x ordito's timeordito (CUDA)1x · 22.1 µstrimesh: 40.49 ms, 1831x ordito's timetrimesh1831x · 40.49 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 22.1 µs 1x
trimesh 40.49 ms 1831x
All inputs
Input ordito (CUDA) trimesh
sphere_small 16.4 µs
bunny_decimated 22.6 µs 562.8 µs
bunny 17.0 µs 2.50 ms
dragon 22.1 µs 40.49 ms
happy_buddha 27.7 µs 56.43 ms
lucy 464.2 µs 1.613 s

make_winding_consistent

0.1x1x10x100x1000xordito (CUDA): 148.6 µs, 1x ordito's timeordito (CUDA)1x · 148.6 µsMeshLib: 6.91 ms, 46x ordito's timeMeshLib46x · 6.91 mstrimesh: 17.97 ms, 121x ordito's timetrimesh121x · 17.97 mslibigl: 36.63 ms, 247x ordito's timelibigl247x · 36.63 msMeshLab: 51.21 ms, 345x ordito's timeMeshLab345x · 51.21 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 148.6 µs 1x
MeshLib 6.91 ms 46x
trimesh 17.97 ms 121x
libigl 36.63 ms 247x
MeshLab 51.21 ms 345x
All inputs
Input ordito (CUDA) libigl MeshLab MeshLib trimesh
ribbon_long 474.3 µs 12.09 ms 32.51 ms 1.24 ms 7.92 ms
sphere_med 148.6 µs 36.63 ms 51.21 ms 6.91 ms 17.97 ms

make_volume

0.1x1x10x100x1000x10000xordito (CUDA): 186.0 µs, 1x ordito's timeordito (CUDA)1x · 186.0 µstrimesh: 252.79 ms, 1359x ordito's timetrimesh1359x · 252.79 msPyVista: 401.45 ms, 2159x ordito's timePyVista2159x · 401.45 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 186.0 µs 1x
trimesh 252.79 ms 1359x
PyVista 401.45 ms 2159x
All inputs
Input ordito (CUDA) PyVista trimesh
sphere_small 120.4 µs
bunny_decimated 131.2 µs 6.90 ms 3.15 ms
bunny 140.2 µs 25.81 ms 14.35 ms
dragon 186.0 µs 401.45 ms 252.79 ms
happy_buddha 291.2 µs 557.20 ms 1.083 s
lucy 7.29 ms 17.280 s 10.434 s

flip_t_vertices

0.1x1x10x100xordito (CUDA): 362.3 µs, 1x ordito's timeordito (CUDA)1x · 362.3 µsMeshLab: 18.80 ms, 52x ordito's timeMeshLab52x · 18.80 ms
saddle (34 848 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 362.3 µs 1x
MeshLab 18.80 ms 52x
All inputs
Input ordito (CUDA) MeshLab
saddle 362.3 µs 18.80 ms
saddle_graded 532.1 µs 24.90 ms

remove_degenerate_faces

0.01x0.1x1x10x100xMeshLib: 39.4 µs, 0.37x ordito's timeMeshLib0.37x · 39.4 µsordito (CUDA): 106.5 µs, 1x ordito's timeordito (CUDA)1x · 106.5 µstrimesh: 2.24 ms, 21x ordito's timetrimesh21x · 2.24 msMeshLab: 5.98 ms, 56x ordito's timeMeshLab56x · 5.98 ms
saddle (34 848 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
MeshLib 39.4 µs 0.37x
ordito (CUDA) 106.5 µs 1x
trimesh 2.24 ms 21x
MeshLab 5.98 ms 56x
All inputs
Input ordito (CUDA) MeshLab MeshLib trimesh
saddle 106.5 µs 5.98 ms 39.4 µs 2.24 ms
saddle_graded 90.4 µs 5.98 ms 37.5 µs 1.97 ms

fix_self_intersections

0.1x1x10xordito (CUDA): 32.59 ms, 1x ordito's timeordito (CUDA)1x · 32.59 msMeshLib: 192.47 ms, 5.9x ordito's timeMeshLib5.9x · 192.47 ms
tangle_torus (163 840 faces) · method=local · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 32.59 ms 1x
MeshLib 192.47 ms 5.9x
All inputs
Input ordito (CUDA) MeshLib
tangle_torus_small method=local 16.20 ms 15.09 ms
tangle_torus_small method=voxel 1.43 ms 48.98 ms
tangle_torus method=local 32.59 ms 192.47 ms
tangle_torus method=voxel 3.43 ms 85.05 ms

collapse_small_triangles

0.1x1x10x100x1000xordito (CUDA): 150.8 µs, 1x ordito's timeordito (CUDA)1x · 150.8 µsMeshLib: 48.90 ms, 324x ordito's timeMeshLib324x · 48.90 ms
saddle (34 848 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 150.8 µs 1x
MeshLib 48.90 ms 324x
All inputs
Input ordito (CUDA) MeshLib
saddle 150.8 µs 48.90 ms
saddle_graded 237.6 µs 47.31 ms

fix_degeneracies

0.1x1x10x100xordito (CUDA): 69.5 µs, 1x ordito's timeordito (CUDA)1x · 69.5 µsMeshLib: 3.64 ms, 52x ordito's timeMeshLib52x · 3.64 ms
saddle (34 848 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 69.5 µs 1x
MeshLib 3.64 ms 52x
All inputs
Input ordito (CUDA) MeshLib
saddle 69.5 µs 3.64 ms
saddle_graded 9.78 ms 12.50 ms

remove_degree3_vertices

0.01x0.1x1xMeshLib: 307.5 µs, 0.57x ordito's timeMeshLib0.57x · 307.5 µsordito (CUDA): 541.4 µs, 1x ordito's timeordito (CUDA)1x · 541.4 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
MeshLib 307.5 µs 0.57x
ordito (CUDA) 541.4 µs 1x
All inputs
Input ordito (CUDA) MeshLib
sphere_small 267.3 µs
bunny_decimated 20.1 µs
bunny 336.0 µs 39.2 µs
dragon 541.4 µs 307.5 µs
happy_buddha 643.2 µs 382.3 µs
lucy 29.37 ms

straighten_boundary

0.1x1x10x100x1000xordito (CUDA): 460.0 µs, 1x ordito's timeordito (CUDA)1x · 460.0 µsMeshLib: 57.53 ms, 125x ordito's timeMeshLib125x · 57.53 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 460.0 µs 1x
MeshLib 57.53 ms 125x
All inputs
Input ordito (CUDA) MeshLib
sphere_small 272.4 µs
bunny_decimated 8.28 ms
bunny 308.8 µs 8.96 ms
dragon 460.0 µs 57.53 ms
happy_buddha 536.4 µs 67.58 ms
lucy 3.621 s

flatten_degree3_vertices

0.1x1x10x100x1000xordito (CUDA): 506.4 µs, 1x ordito's timeordito (CUDA)1x · 506.4 µsMeshLib: 55.84 ms, 110x ordito's timeMeshLib110x · 55.84 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 506.4 µs 1x
MeshLib 55.84 ms 110x
All inputs
Input ordito (CUDA) MeshLib
sphere_small 338.9 µs
bunny_decimated 7.95 ms
bunny 251.4 µs 8.52 ms
dragon 506.4 µs 55.84 ms
happy_buddha 663.1 µs 66.52 ms
lucy 3.562 s

resolve_duplicated_faces

0.1x1x10x100x1000xordito (CUDA): 148.8 µs, 1x ordito's timeordito (CUDA)1x · 148.8 µsOpen3D: 8.70 ms, 58x ordito's timeOpen3D58x · 8.70 mslibigl: 17.37 ms, 117x ordito's timelibigl117x · 17.37 msMeshLab: 22.65 ms, 152x ordito's timeMeshLab152x · 22.65 ms
sphere_med (81 920 faces) · fraction=0.0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 148.8 µs 1x
Open3D 8.70 ms 58x
libigl 17.37 ms 117x
MeshLab 22.65 ms 152x
All inputs
Input ordito (CUDA) libigl MeshLab Open3D
sphere_med fraction=0.0 148.8 µs 17.37 ms 22.65 ms 8.70 ms
sphere_med fraction=0.1 150.9 µs 19.86 ms 25.49 ms 10.67 ms

make_normals_outward

0.1x1x10x100x1000xordito (CUDA): 330.9 µs, 1x ordito's timeordito (CUDA)1x · 330.9 µstrimesh: 253.59 ms, 766x ordito's timetrimesh766x · 253.59 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 330.9 µs 1x
trimesh 253.59 ms 766x
All inputs
Input ordito (CUDA) trimesh
sphere_small 139.6 µs
bunny_decimated 149.5 µs 3.38 ms
bunny 167.5 µs 14.79 ms
dragon 330.9 µs 253.59 ms
happy_buddha 408.2 µs 1.070 s
lucy 14.50 ms > 10 min

Without a reference

No other library computes these, so they have no comparison. ordito (CUDA)'s median time on the largest input it was measured on:

Function Input ordito (CUDA)
remove_degenerate_and_non_manifold_faces sphere_med extra=1024 204.7 µs
duplicate_vertex_inverse sphere_med epsilon=1e-06 265.0 µs
remove_folded_faces saddle_graded 166.2 µs
remove_tunnels handles_64 6.10 ms