Skip to content

boundary

Benchmarks of ordito.boundary 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: 2x ordito's time, geometric mean over 5 functions; slower than ordito in 3MeshLib2x (5)trimesh: 136x ordito's time, geometric mean over 3 functions; slower than ordito in 3trimesh136x (3)MeshLab: 152x ordito's time, geometric mean over 2 functions; slower than ordito in 2MeshLab152x (2)PyVista: 156x ordito's time, geometric mean over 1 functions; slower than ordito in 1PyVista156x (1)libigl: 248x ordito's time, geometric mean over 4 functions; slower than ordito in 4libigl248x (4)
Time relative to ordito (CUDA), geometric mean over the boundary 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 2x 5 3
trimesh 136x 3 3
MeshLab 152x 2 2
PyVista 156x 1 1
libigl 248x 4 4

boundary_loops

0.1x1x10x100x1000xordito (CUDA): 392.7 µs, 1x ordito's timeordito (CUDA)1x · 392.7 µslibigl: 45.22 ms, 115x ordito's timelibigl115x · 45.22 msMeshLib: 71.02 ms, 181x ordito's timeMeshLib181x · 71.02 mstrimesh: 306.26 ms, 780x ordito's timetrimesh780x · 306.26 ms
rim_long (131 072 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 392.7 µs 1x
libigl 45.22 ms 115x
MeshLib 71.02 ms 181x
trimesh 306.26 ms 780x
All inputs
Input ordito (CUDA) libigl MeshLib trimesh
holes_many 497.8 µs 18.14 ms 11.98 ms 145.92 ms
sphere_med 147.2 µs 17.39 ms 10.79 ms 16.13 ms
rim_long 392.7 µs 45.22 ms 71.02 ms 306.26 ms

boundary_edges

0.01x0.1x1x10x100x1000xMeshLib: 55.0 µs, 0.31x ordito's timeMeshLib0.31x · 55.0 µsordito (CUDA): 178.5 µs, 1x ordito's timeordito (CUDA)1x · 178.5 µstrimesh: 17.86 ms, 100x ordito's timetrimesh100x · 17.86 msMeshLab: 43.46 ms, 243x ordito's timeMeshLab243x · 43.46 mslibigl: 43.80 ms, 245x ordito's timelibigl245x · 43.80 msPyVista: 56.55 ms, 317x ordito's timePyVista317x · 56.55 ms
rim_long (131 072 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
MeshLib 55.0 µs 0.31x
ordito (CUDA) 178.5 µs 1x
trimesh 17.86 ms 100x
MeshLab 43.46 ms 243x
libigl 43.80 ms 245x
PyVista 56.55 ms 317x
All inputs
Input ordito (CUDA) libigl MeshLab MeshLib PyVista trimesh
holes_many 151.2 µs 22.64 ms 15.05 ms 49.7 µs 16.76 ms 9.76 ms
sphere_med 151.3 µs 22.48 ms 15.48 ms 49.0 µs 16.49 ms 9.79 ms
rim_long 178.5 µs 43.80 ms 43.46 ms 55.0 µs 56.55 ms 17.86 ms

loop_perimeters

0.1x1x10xordito (CUDA): 251.1 µs, 1x ordito's timeordito (CUDA)1x · 251.1 µsMeshLib: 930.2 µs, 3.7x ordito's timeMeshLib3.7x · 930.2 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 251.1 µs 1x
MeshLib 930.2 µs 3.7x
All inputs
Input ordito (CUDA) MeshLib
saddle_small 65.3 µs
bunny_decimated 65.6 µs 143.5 µs
bunny 48.3 µs 34.2 µs
dragon 251.1 µs 930.2 µs
lucy 101.7 µs

loop_directed_areas

0.1x1x10xordito (CUDA): 241.4 µs, 1x ordito's timeordito (CUDA)1x · 241.4 µsMeshLib: 975.6 µs, 4x ordito's timeMeshLib4x · 975.6 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 241.4 µs 1x
MeshLib 975.6 µs 4x
All inputs
Input ordito (CUDA) MeshLib
saddle_small 67.1 µs
bunny_decimated 53.1 µs 165.6 µs
bunny 47.9 µs 37.8 µs
dragon 241.4 µs 975.6 µs
lucy 164.2 µs

oriented_boundary_edges

0.1x1x10x100x1000xordito (CUDA): 176.9 µs, 1x ordito's timeordito (CUDA)1x · 176.9 µstrimesh: 26.76 ms, 151x ordito's timetrimesh151x · 26.76 mslibigl: 52.42 ms, 296x ordito's timelibigl296x · 52.42 ms
rim_long (131 072 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 176.9 µs 1x
trimesh 26.76 ms 151x
libigl 52.42 ms 296x
All inputs
Input ordito (CUDA) libigl trimesh
holes_many 158.5 µs 26.52 ms 13.40 ms
sphere_med 115.6 µs 27.05 ms 13.57 ms
rim_long 176.9 µs 52.42 ms 26.76 ms

boundary_vertex_indices

0.01x0.1x1x10x100x1000xMeshLib: 56.4 µs, 0.38x ordito's timeMeshLib0.38x · 56.4 µsordito (CUDA): 149.0 µs, 1x ordito's timeordito (CUDA)1x · 149.0 µsMeshLab: 47.03 ms, 316x ordito's timeMeshLab316x · 47.03 ms
rim_long (131 072 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
MeshLib 56.4 µs 0.38x
ordito (CUDA) 149.0 µs 1x
MeshLab 47.03 ms 316x
All inputs
Input ordito (CUDA) MeshLab MeshLib
holes_many 149.0 µs 16.00 ms 50.7 µs
sphere_med 110.2 µs 16.36 ms 52.2 µs
rim_long 149.0 µs 47.03 ms 56.4 µs

ears

0.1x1x10x100x1000x10000xordito (CUDA): 163.1 µs, 1x ordito's timeordito (CUDA)1x · 163.1 µslibigl: 309.68 ms, 1898x ordito's timelibigl1898x · 309.68 ms
rim_long (131 072 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 163.1 µs 1x
libigl 309.68 ms 1898x
All inputs
Input ordito (CUDA) libigl
holes_many 141.8 µs 126.78 ms
sphere_med 119.0 µs 123.23 ms
rim_long 163.1 µs 309.68 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)
boundary_loops_with_offsets rim_long 414.3 µs
boundary_vertices rim_long 152.4 µs
loop_perimeters_from_offsets dragon 64.0 µs
loop_directed_areas_from_offsets dragon 77.3 µs