Skip to content

adjacency

Benchmarks of ordito.adjacency 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: 29x ordito's time, geometric mean over 1 functions; slower than ordito in 1MeshLib29x (1)libigl: 109x ordito's time, geometric mean over 4 functions; slower than ordito in 4libigl109x (4)PyVista: 365x ordito's time, geometric mean over 1 functions; slower than ordito in 1PyVista365x (1)trimesh: 1002x ordito's time, geometric mean over 5 functions; slower than ordito in 5trimesh1002x (5)
Time relative to ordito (CUDA), geometric mean over the adjacency 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 29x 1 1
libigl 109x 4 4
PyVista 365x 1 1
trimesh 1002x 5 5

face_adjacency

0.1x1x10x100x1000xordito (CUDA): 409.3 µs, 1x ordito's timeordito (CUDA)1x · 409.3 µslibigl: 32.85 ms, 80x ordito's timelibigl80x · 32.85 mstrimesh: 289.60 ms, 707x ordito's timetrimesh707x · 289.60 ms
dragon (871 414 faces) · known_radix=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 409.3 µs 1x
libigl 32.85 ms 80x
trimesh 289.60 ms 707x
All inputs
Input ordito (CUDA) libigl trimesh
sphere_small known_radix=False 157.3 µs
sphere_small known_radix=True 114.7 µs
bunny_decimated known_radix=False 154.8 µs 3.07 ms 3.89 ms
bunny_decimated known_radix=True 126.7 µs
bunny known_radix=False 166.1 µs 4.45 ms 18.40 ms
bunny known_radix=True 175.3 µs
dragon known_radix=False 409.3 µs 32.85 ms 289.60 ms
dragon known_radix=True 411.1 µs
happy_buddha known_radix=False 678.4 µs 40.08 ms 362.47 ms
happy_buddha known_radix=True 626.9 µs
lucy known_radix=False 19.66 ms 1.835 s 11.100 s
lucy known_radix=True 16.72 ms

face_adjacency_unshared

0.1x1x10x100x1000x10000x100000xordito (CUDA): 33.9 µs, 1x ordito's timeordito (CUDA)1x · 33.9 µslibigl: 29.69 ms, 875x ordito's timelibigl875x · 29.69 mstrimesh: 419.37 ms, 12353x ordito's timetrimesh12353x · 419.37 ms
dragon (871 414 faces) · tabled=True · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 33.9 µs 1x
libigl 29.69 ms 875x
trimesh 419.37 ms 12353x
All inputs
Input ordito (CUDA) libigl trimesh
sphere_small tabled=True 29.0 µs
sphere_small tabled=False 132.2 µs
bunny_decimated tabled=True 20.9 µs 3.10 ms 5.74 ms
bunny_decimated tabled=False 157.2 µs
bunny tabled=True 22.1 µs 4.43 ms 29.05 ms
bunny tabled=False 149.6 µs
dragon tabled=True 33.9 µs 29.69 ms 419.37 ms
dragon tabled=False 491.5 µs
happy_buddha tabled=True 45.3 µs 40.67 ms 519.21 ms
happy_buddha tabled=False 609.9 µs
lucy tabled=True 874.8 µs 1.829 s 15.502 s
lucy tabled=False 17.06 ms

face_adjacency_angles

0.1x1x10x100x1000x10000x100000xordito (CUDA): 36.3 µs, 1x ordito's timeordito (CUDA)1x · 36.3 µstrimesh: 530.56 ms, 14630x ordito's timetrimesh14630x · 530.56 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 36.3 µs 1x
trimesh 530.56 ms 14630x
All inputs
Input ordito (CUDA) trimesh
sphere_small 24.7 µs
bunny_decimated 27.5 µs 6.13 ms
bunny 21.9 µs 26.51 ms
dragon 36.3 µs 530.56 ms
happy_buddha 43.3 µs 645.51 ms
lucy 694.7 µs 17.062 s

vertex_face_adjacency

0.1x1x10x100xordito (CUDA): 67.0 µs, 1x ordito's timeordito (CUDA)1x · 67.0 µslibigl: 810.9 µs, 12x ordito's timelibigl12x · 810.9 µs
sphere_med (81 920 faces) · known_nv=True · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 67.0 µs 1x
libigl 810.9 µs 12x
All inputs
Input ordito (CUDA) libigl
sphere_med known_nv=True 67.0 µs 810.9 µs
fan_hub known_nv=True 98.8 µs 728.1 µs
sphere_med known_nv=False 108.0 µs
fan_hub known_nv=False 140.3 µs

face_adjacency_projections

0.1x1x10x100x1000x10000xordito (CUDA): 459.7 µs, 1x ordito's timeordito (CUDA)1x · 459.7 µstrimesh: 653.25 ms, 1421x ordito's timetrimesh1421x · 653.25 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 459.7 µs 1x
trimesh 653.25 ms 1421x
All inputs
Input ordito (CUDA) trimesh
sphere_small 140.4 µs
bunny_decimated 130.4 µs 8.25 ms
bunny 125.5 µs 36.42 ms
dragon 459.7 µs 653.25 ms
happy_buddha 677.8 µs 832.31 ms
lucy 17.58 ms 22.223 s

face_adjacency_convex

0.1x1x10x100x1000x10000xordito (CUDA): 538.5 µs, 1x ordito's timeordito (CUDA)1x · 538.5 µstrimesh: 675.65 ms, 1255x ordito's timetrimesh1255x · 675.65 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 538.5 µs 1x
trimesh 675.65 ms 1255x
All inputs
Input ordito (CUDA) trimesh
sphere_small 149.9 µs
bunny_decimated 141.4 µs 8.28 ms
bunny 146.8 µs 36.73 ms
dragon 538.5 µs 675.65 ms
happy_buddha 704.2 µs 835.86 ms
lucy 17.94 ms 27.570 s

face_connected_component_labels

0.1x1x10x100x1000x10000xordito (CUDA): 301.0 µs, 1x ordito's timeordito (CUDA)1x · 301.0 µsMeshLib: 21.73 ms, 72x ordito's timeMeshLib72x · 21.73 msPyVista: 318.91 ms, 1060x ordito's timePyVista1060x · 318.91 mslibigl: 445.32 ms, 1480x ordito's timelibigl1480x · 445.32 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 301.0 µs 1x
MeshLib 21.73 ms 72x
PyVista 318.91 ms 1060x
libigl 445.32 ms 1480x
All inputs
Input ordito (CUDA) libigl MeshLib PyVista
sphere_small 95.3 µs
bunny_decimated 113.4 µs 8.99 ms 555.0 µs 5.34 ms
bunny 160.6 µs 35.94 ms 2.10 ms 19.65 ms
dragon 301.0 µs 445.32 ms 21.73 ms 318.91 ms
happy_buddha 381.4 µs 565.30 ms 25.40 ms 384.38 ms
lucy 10.39 ms 18.445 s 693.17 ms 11.014 s

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)
vertex_face_adjacency_from_counts fan_hub 94.2 µs
sorted_face_edge_keys lucy bounded=True 9.63 ms