Skip to content

validation

Benchmarks of ordito.validation 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.1x1x10x100x1000x10000xordito (CUDA): the reference, 1xordito (CUDA)1xMeshLib: 20x ordito's time, geometric mean over 3 functions; slower than ordito in 3MeshLib20x (3)trimesh: 100x ordito's time, geometric mean over 5 functions; slower than ordito in 5trimesh100x (5)MeshLab: 208x ordito's time, geometric mean over 5 functions; slower than ordito in 5MeshLab208x (5)libigl: 275x ordito's time, geometric mean over 5 functions; slower than ordito in 5libigl275x (5)Open3D: 589x ordito's time, geometric mean over 4 functions; slower than ordito in 4Open3D589x (4)PyMeshFix: 1000x ordito's time, geometric mean over 2 functions; slower than ordito in 2PyMeshFix1000x (2)PyVista: 6182x ordito's time, geometric mean over 1 functions; slower than ordito in 1PyVista6182x (1)
Time relative to ordito (CUDA), geometric mean over the validation 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 20x 3 3
trimesh 100x 5 5
MeshLab 208x 5 5
libigl 275x 5 5
Open3D 589x 4 4
PyMeshFix 1000x 2 2
PyVista 6182x 1 1

is_watertight

0.1x1x10x100x1000x10000xordito (CUDA): 528.1 µs, 1x ordito's timeordito (CUDA)1x · 528.1 µstrimesh: 16.39 ms, 31x ordito's timetrimesh31x · 16.39 msMeshLab: 125.86 ms, 238x ordito's timeMeshLab238x · 125.86 msOpen3D: 834.92 ms, 1581x ordito's timeOpen3D1581x · 834.92 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 528.1 µs 1x
trimesh 16.39 ms 31x
MeshLab 125.86 ms 238x
Open3D 834.92 ms 1581x
All inputs
Input ordito (CUDA) MeshLab Open3D trimesh
tangle_2 514.7 µs 61.31 ms 231.84 ms 7.94 ms
sphere_med 528.1 µs 125.86 ms 834.92 ms 16.39 ms

is_volume

0.1x1x10x100x1000x10000xordito (CUDA): 127.0 µs, 1x ordito's timeordito (CUDA)1x · 127.0 µstrimesh: 59.75 ms, 471x ordito's timetrimesh471x · 59.75 msMeshLab: 127.59 ms, 1005x ordito's timeMeshLab1005x · 127.59 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 127.0 µs 1x
trimesh 59.75 ms 471x
MeshLab 127.59 ms 1005x
All inputs
Input ordito (CUDA) MeshLab trimesh
tangle_2 150.0 µs 61.93 ms 27.51 ms
sphere_med 127.0 µs 127.59 ms 59.75 ms

face_self_intersecting_mask

0.1x1x10x100x1000x10000xordito (CUDA): 398.7 µs, 1x ordito's timeordito (CUDA)1x · 398.7 µsMeshLib: 5.53 ms, 14x ordito's timeMeshLib14x · 5.53 msMeshLab: 101.44 ms, 254x ordito's timeMeshLab254x · 101.44 msPyMeshFix: 424.55 ms, 1065x ordito's timePyMeshFix1065x · 424.55 msOpen3D: 759.57 ms, 1905x ordito's timeOpen3D1905x · 759.57 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 398.7 µs 1x
MeshLib 5.53 ms 14x
MeshLab 101.44 ms 254x
PyMeshFix 424.55 ms 1065x
Open3D 759.57 ms 1905x
All inputs
Input ordito (CUDA) MeshLab MeshLib Open3D PyMeshFix
tangle_2 408.0 µs 50.21 ms 4.84 ms 194.23 ms 187.51 ms
sphere_med 398.7 µs 101.44 ms 5.53 ms 759.57 ms 424.55 ms

face_defective_mask

0.1x1x10x100x1000xordito (CUDA): 107.9 µs, 1x ordito's timeordito (CUDA)1x · 107.9 µsMeshLib: 2.34 ms, 22x ordito's timeMeshLib22x · 2.34 msMeshLab: 16.74 ms, 155x ordito's timeMeshLab155x · 16.74 ms
saddle (34 848 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 107.9 µs 1x
MeshLib 2.34 ms 22x
MeshLab 16.74 ms 155x
All inputs
Input ordito (CUDA) MeshLab MeshLib
saddle 107.9 µs 16.74 ms 2.34 ms
saddle_graded 103.6 µs 16.57 ms 2.42 ms

is_vertex_manifold

0.1x1x10x100x1000xordito (CUDA): 138.0 µs, 1x ordito's timeordito (CUDA)1x · 138.0 µsMeshLab: 22.63 ms, 164x ordito's timeMeshLab164x · 22.63 msOpen3D: 72.09 ms, 522x ordito's timeOpen3D522x · 72.09 mslibigl: 117.09 ms, 848x ordito's timelibigl848x · 117.09 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 138.0 µs 1x
MeshLab 22.63 ms 164x
Open3D 72.09 ms 522x
libigl 117.09 ms 848x
All inputs
Input ordito (CUDA) libigl MeshLab Open3D
sphere_med 138.0 µs 117.09 ms 22.63 ms 72.09 ms
fan_hub 157.9 µs 130.83 ms 16.14 ms 66.70 ms

vertex_manifold_mask

0.1x1x10x100x1000xordito (CUDA): 142.7 µs, 1x ordito's timeordito (CUDA)1x · 142.7 µslibigl: 127.71 ms, 895x ordito's timelibigl895x · 127.71 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 142.7 µs 1x
libigl 127.71 ms 895x
All inputs
Input ordito (CUDA) libigl
sphere_med 142.7 µs 127.71 ms
fan_hub 179.1 µs 137.27 ms

is_edge_manifold

0.1x1x10x100x1000xordito (CUDA): 84.4 µs, 1x ordito's timeordito (CUDA)1x · 84.4 µsPyVista: 19.20 ms, 227x ordito's timePyVista227x · 19.20 mslibigl: 30.02 ms, 356x ordito's timelibigl356x · 30.02 msOpen3D: 31.63 ms, 375x ordito's timeOpen3D375x · 31.63 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 84.4 µs 1x
PyVista 19.20 ms 227x
libigl 30.02 ms 356x
Open3D 31.63 ms 375x
All inputs
Input ordito (CUDA) libigl Open3D PyVista
sphere_med 84.4 µs 30.02 ms 31.63 ms 19.20 ms
fan_hub 92.0 µs 13.05 ms 25.05 ms 15.451 s

is_winding_consistent

0.1x1x10x100x1000x10000xordito (CUDA): 207.6 µs, 1x ordito's timeordito (CUDA)1x · 207.6 µstrimesh: 305.94 ms, 1474x ordito's timetrimesh1474x · 305.94 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 207.6 µs 1x
trimesh 305.94 ms 1474x
All inputs
Input ordito (CUDA) trimesh
sphere_small 99.4 µs
bunny_decimated 95.4 µs 3.80 ms
bunny 110.0 µs 20.33 ms
dragon 207.6 µs 305.94 ms
happy_buddha 372.7 µs 383.15 ms
lucy 7.92 ms 10.565 s

face_orientation_bits

0.1x1x10x100x1000xordito (CUDA): 317.8 µs, 1x ordito's timeordito (CUDA)1x · 317.8 µstrimesh: 19.61 ms, 62x ordito's timetrimesh62x · 19.61 mslibigl: 42.59 ms, 134x ordito's timelibigl134x · 42.59 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 317.8 µs 1x
trimesh 19.61 ms 62x
libigl 42.59 ms 134x
All inputs
Input ordito (CUDA) libigl trimesh
ribbon_long 187.8 µs 13.20 ms 9.64 ms
sphere_med 317.8 µs 42.59 ms 19.61 ms

face_flip_mask

0.1x1x10x100x1000xordito (CUDA): 148.7 µs, 1x ordito's timeordito (CUDA)1x · 148.7 µstrimesh: 19.20 ms, 129x ordito's timetrimesh129x · 19.20 mslibigl: 40.20 ms, 270x ordito's timelibigl270x · 40.20 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 148.7 µs 1x
trimesh 19.20 ms 129x
libigl 40.20 ms 270x
All inputs
Input ordito (CUDA) libigl trimesh
ribbon_long 336.7 µs 13.54 ms 10.25 ms
sphere_med 148.7 µs 40.20 ms 19.20 ms

is_self_intersecting

0.1x1x10x100x1000x10000xordito (CUDA): 214.2 µs, 1x ordito's timeordito (CUDA)1x · 214.2 µsMeshLib: 5.61 ms, 26x ordito's timeMeshLib26x · 5.61 msPyMeshFix: 474.55 ms, 2216x ordito's timePyMeshFix2216x · 474.55 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 214.2 µs 1x
MeshLib 5.61 ms 26x
PyMeshFix 474.55 ms 2216x
All inputs
Input ordito (CUDA) MeshLib PyMeshFix
tangle_2 218.8 µs 5.57 ms 202.10 ms
sphere_med 214.2 µs 5.61 ms 474.55 ms

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)
edge_manifold_mask fan_hub allow_boundary_edges=False 170.1 µs
edge_winding_consistent_mask lucy 24.47 ms
is_orientable sphere_med 153.4 µs
face_watertight_mask sphere_med 161.2 µs