Skip to content

intersection

Benchmarks of ordito.intersection 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: 4x ordito's time, geometric mean over 8 functions; slower than ordito in 5MeshLib4x (8)libigl: 61x ordito's time, geometric mean over 2 functions; slower than ordito in 2libigl61x (2)potpourri3d: 99x ordito's time, geometric mean over 2 functions; slower than ordito in 2potpourri3d99x (2)trimesh: 167x ordito's time, geometric mean over 3 functions; slower than ordito in 3trimesh167x (3)PyVista: 934x ordito's time, geometric mean over 5 functions; slower than ordito in 5PyVista934x (5)
Time relative to ordito (CUDA), geometric mean over the intersection 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 4x 8 5
libigl 61x 2 2
potpourri3d 99x 2 2
trimesh 167x 3 3
PyVista 934x 5 5

mesh_with_plane

0.1x1x10x100x1000xordito (CUDA): 61.2 µs, 1x ordito's timeordito (CUDA)1x · 61.2 µsMeshLib: 855.6 µs, 14x ordito's timeMeshLib14x · 855.6 µstrimesh: 35.94 ms, 588x ordito's timetrimesh588x · 35.94 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 61.2 µs 1x
MeshLib 855.6 µs 14x
trimesh 35.94 ms 588x
All inputs
Input ordito (CUDA) MeshLib trimesh
sphere_small 70.2 µs
bunny_decimated 58.2 µs 210.0 µs 660.6 µs
bunny 50.1 µs 115.1 µs 2.22 ms
dragon 61.2 µs 855.6 µs 35.94 ms
happy_buddha 66.8 µs 390.4 µs 42.66 ms
lucy 3.53 ms 6.50 ms 832.93 ms

slice_mesh_with_plane

0.1x1x10x100x1000xordito (CUDA): 140.8 µs, 1x ordito's timeordito (CUDA)1x · 140.8 µsMeshLib: 59.42 ms, 422x ordito's timeMeshLib422x · 59.42 mstrimesh: 121.19 ms, 861x ordito's timetrimesh861x · 121.19 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 140.8 µs 1x
MeshLib 59.42 ms 422x
trimesh 121.19 ms 861x
All inputs
Input ordito (CUDA) MeshLib trimesh
sphere_small 94.5 µs
bunny_decimated 113.2 µs 8.26 ms 1.55 ms
bunny 110.6 µs 9.82 ms 6.02 ms
dragon 140.8 µs 59.42 ms 121.19 ms
happy_buddha 157.9 µs 70.38 ms 140.29 ms
lucy 9.59 ms 3.336 s 3.065 s

split_mesh_with_plane

0.1x1x10x100x1000x10000xordito (CUDA): 186.9 µs, 1x ordito's timeordito (CUDA)1x · 186.9 µsMeshLib: 56.94 ms, 305x ordito's timeMeshLib305x · 56.94 msPyVista: 323.11 ms, 1729x ordito's timePyVista1729x · 323.11 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 186.9 µs 1x
MeshLib 56.94 ms 305x
PyVista 323.11 ms 1729x
All inputs
Input ordito (CUDA) MeshLib PyVista
sphere_small 146.4 µs
bunny_decimated 148.6 µs 8.13 ms 6.96 ms
bunny 176.1 µs 9.35 ms 23.19 ms
dragon 186.9 µs 56.94 ms 323.11 ms
happy_buddha 198.5 µs 69.39 ms 414.30 ms
lucy 2.71 ms 3.190 s 56.991 s

split_faces_along_field

0.1x1x10x100x1000x10000xordito (CUDA): 282.7 µs, 1x ordito's timeordito (CUDA)1x · 282.7 µsPyVista: 338.94 ms, 1199x ordito's timePyVista1199x · 338.94 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 282.7 µs 1x
PyVista 338.94 ms 1199x
All inputs
Input ordito (CUDA) PyVista
sphere_small 222.7 µs
bunny_decimated 168.5 µs 6.99 ms
bunny 194.5 µs 25.22 ms
dragon 282.7 µs 338.94 ms
happy_buddha 280.7 µs 439.01 ms
lucy 6.89 ms 64.413 s

clip_mesh_with_field

0.1x1x10x100x1000xordito (CUDA): 162.2 µs, 1x ordito's timeordito (CUDA)1x · 162.2 µsPyVista: 118.71 ms, 732x ordito's timePyVista732x · 118.71 ms
dragon (871 414 faces) · cap=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 162.2 µs 1x
PyVista 118.71 ms 732x
All inputs
Input ordito (CUDA) PyVista
sphere_small cap=False 105.6 µs
sphere_small cap=True 936.9 µs
bunny_decimated cap=False 205.1 µs 2.33 ms
bunny_decimated cap=True 1.62 ms
bunny cap=False 121.6 µs 9.21 ms
bunny cap=True 2.26 ms
dragon cap=False 162.2 µs 118.71 ms
dragon cap=True 4.89 ms
happy_buddha cap=False 181.2 µs 165.70 ms
happy_buddha cap=True 4.35 ms
lucy cap=False 10.13 ms 28.564 s
lucy cap=True 24.19 ms

mesh_with_mesh

0.1x1x10x100x1000x10000xordito (CUDA): 2.42 ms, 1x ordito's timeordito (CUDA)1x · 2.42 msMeshLib: 11.35 ms, 4.7x ordito's timeMeshLib4.7x · 11.35 msPyVista: 6.120 s, 2529x ordito's timePyVista2529x · 6.120 s
dragon (871 414 faces) · offset_fraction=0.05 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 2.42 ms 1x
MeshLib 11.35 ms 4.7x
PyVista 6.120 s 2529x
All inputs
Input ordito (CUDA) MeshLib PyVista
sphere_small offset_fraction=0.05 389.6 µs
sphere_small offset_fraction=0.6 311.5 µs
bunny_decimated offset_fraction=0.05 409.2 µs 606.2 µs 82.29 ms
bunny_decimated offset_fraction=0.6 277.8 µs 186.3 µs 44.59 ms
bunny offset_fraction=0.05 501.9 µs 1.74 ms 345.65 ms
bunny offset_fraction=0.6 308.7 µs 609.3 µs 217.01 ms
dragon offset_fraction=0.05 2.42 ms 11.35 ms 6.120 s
dragon offset_fraction=0.6 1.49 ms 7.46 ms 3.478 s
happy_buddha offset_fraction=0.05 3.14 ms 13.68 ms 10.537 s
happy_buddha offset_fraction=0.6 1.88 ms 9.27 ms 4.503 s
lucy offset_fraction=0.05 64.86 ms 285.06 ms 136.389 s
lucy offset_fraction=0.6 53.70 ms 265.71 ms 127.843 s

mesh_collision_pairs

0.1x1x10x100x1000x10000xordito (CUDA): 1.45 ms, 1x ordito's timeordito (CUDA)1x · 1.45 msPyVista: 1.884 s, 1299x ordito's timePyVista1299x · 1.884 s
dragon (871 414 faces) · offset_fraction=0.6 · setup=full · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 1.45 ms 1x
PyVista 1.884 s 1299x
All inputs
Input ordito (CUDA) MeshLib PyVista
sphere_small offset_fraction=0.05 setup=full 336.1 µs
sphere_small offset_fraction=0.6 setup=full 292.6 µs
sphere_small offset_fraction=0.05 setup=amortized 205.8 µs
sphere_small offset_fraction=0.6 setup=amortized 133.4 µs
bunny_decimated offset_fraction=0.05 setup=full 370.7 µs 5.335 s
bunny_decimated offset_fraction=0.6 setup=full 325.8 µs 52.54 ms
bunny_decimated offset_fraction=0.05 setup=amortized 190.7 µs 2.08 ms
bunny_decimated offset_fraction=0.6 setup=amortized 137.5 µs 13.6 µs
bunny offset_fraction=0.05 setup=amortized 258.8 µs 4.14 ms
bunny offset_fraction=0.6 setup=amortized 136.4 µs 12.1 µs
bunny offset_fraction=0.05 setup=full 531.0 µs 63.932 s
bunny offset_fraction=0.6 setup=full 356.0 µs 170.25 ms
dragon offset_fraction=0.6 setup=full 1.45 ms 1.884 s
dragon offset_fraction=0.05 setup=amortized 1.36 ms 23.37 ms
dragon offset_fraction=0.6 setup=amortized 640.7 µs 15.8 µs
dragon offset_fraction=0.05 setup=full 2.25 ms > 10 min
happy_buddha offset_fraction=0.6 setup=full 1.85 ms 230.926 s
happy_buddha offset_fraction=0.05 setup=amortized 1.67 ms 32.96 ms
happy_buddha offset_fraction=0.6 setup=amortized 633.4 µs 21.1 µs
happy_buddha offset_fraction=0.05 setup=full 2.88 ms > 10 min
lucy offset_fraction=0.6 setup=full 53.60 ms 56.375 s
lucy offset_fraction=0.05 setup=amortized 29.03 ms 132.31 ms
lucy offset_fraction=0.6 setup=amortized 19.59 ms 9.7 µs
lucy offset_fraction=0.05 setup=full 64.06 ms > 10 min

segments_with_plane

0.1x1x10x100x1000xordito (CUDA): 77.8 µs, 1x ordito's timeordito (CUDA)1x · 77.8 µstrimesh: 52.11 ms, 670x ordito's timetrimesh670x · 52.11 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 77.8 µs 1x
trimesh 52.11 ms 670x
All inputs
Input ordito (CUDA) trimesh
sphere_small 68.4 µs
bunny_decimated 62.5 µs 507.4 µs
bunny 66.1 µs 2.28 ms
dragon 77.8 µs 52.11 ms
happy_buddha 82.7 µs 57.80 ms
lucy 859.4 µs 1.834 s

marching_triangles

0.01x0.1x1x10x100x1000xMeshLib: 484.7 µs, 0.93x ordito's timeMeshLib0.93x · 484.7 µsordito (CUDA): 523.3 µs, 1x ordito's timeordito (CUDA)1x · 523.3 µslibigl: 144.07 ms, 275x ordito's timelibigl275x · 144.07 mspotpourri3d: 187.21 ms, 358x ordito's timepotpourri3d358x · 187.21 ms
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
MeshLib 484.7 µs 0.93x
ordito (CUDA) 523.3 µs 1x
libigl 144.07 ms 275x
potpourri3d 187.21 ms 358x
All inputs
Input ordito (CUDA) libigl MeshLib potpourri3d
sphere_small 304.8 µs 10.72 ms 78.1 µs 2.00 ms
sphere_med 402.0 µs 34.58 ms 222.9 µs 37.24 ms
sphere_large 523.3 µs 144.07 ms 484.7 µs 187.21 ms

marching_triangles_curves

0.01x0.1x1x10x100xMeshLib: 231.5 µs, 0.39x ordito's timeMeshLib0.39x · 231.5 µsordito (CUDA): 598.3 µs, 1x ordito's timeordito (CUDA)1x · 598.3 µslibigl: 34.76 ms, 58x ordito's timelibigl58x · 34.76 mspotpourri3d: 36.88 ms, 62x ordito's timepotpourri3d62x · 36.88 ms
sphere_med (81 920 faces) · field=plane · time relative to ordito, log scale
Values
Library Median Relative to ordito
MeshLib 231.5 µs 0.39x
ordito (CUDA) 598.3 µs 1x
libigl 34.76 ms 58x
potpourri3d 36.88 ms 62x
All inputs
Input ordito (CUDA) libigl MeshLib potpourri3d
sphere_med field=plane 598.3 µs 34.76 ms 231.5 µs 36.88 ms
sphere_med field=wave12 651.7 µs 36.44 ms 1.20 ms 92.36 ms
sphere_med field=wave40 1.96 ms 37.67 ms 6.55 ms 999.24 ms

collision_masks

0.1x1x10x100xordito (CUDA): 2.01 ms, 1x ordito's timeordito (CUDA)1x · 2.01 msMeshLib: 25.92 ms, 13x ordito's timeMeshLib13x · 25.92 ms
dragon (871 414 faces) · offset_fraction=0.05 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 2.01 ms 1x
MeshLib 25.92 ms 13x
All inputs
Input ordito (CUDA) MeshLib
sphere_small offset_fraction=0.05 314.6 µs
sphere_small offset_fraction=0.6 258.9 µs
bunny_decimated offset_fraction=0.05 325.0 µs 2.08 ms
bunny_decimated offset_fraction=0.6 234.0 µs 25.8 µs
bunny offset_fraction=0.05 404.7 µs 4.20 ms
bunny offset_fraction=0.6 276.5 µs 24.3 µs
dragon offset_fraction=0.05 2.01 ms 25.92 ms
dragon offset_fraction=0.6 1.18 ms 22.3 µs
happy_buddha offset_fraction=0.05 2.75 ms 34.99 ms
happy_buddha offset_fraction=0.6 1.60 ms 23.2 µs
lucy offset_fraction=0.05 53.83 ms 137.42 ms
lucy offset_fraction=0.6 48.49 ms 12.0 µ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)
face_box_candidates lucy offset_fraction=0.6 4.06 ms
marching_triangles_with_offsets sphere_med field=wave40 540.8 µs