Skip to content

triangles

Benchmarks of ordito.triangles 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)1xPyTorch3D (CUDA): 1.2x ordito's time, geometric mean over 1 functions; slower than ordito in 1PyTorch3D (CUDA)1.2x (1)MeshLib: 16x ordito's time, geometric mean over 2 functions; slower than ordito in 2MeshLib16x (2)MeshLab: 67x ordito's time, geometric mean over 2 functions; slower than ordito in 2MeshLab67x (2)Open3D: 69x ordito's time, geometric mean over 1 functions; slower than ordito in 1Open3D69x (1)NumPy: 504x ordito's time, geometric mean over 1 functions; slower than ordito in 1NumPy504x (1)libigl: 543x ordito's time, geometric mean over 5 functions; slower than ordito in 5libigl543x (5)PyVista: 553x ordito's time, geometric mean over 4 functions; slower than ordito in 4PyVista553x (4)potpourri3d: 943x ordito's time, geometric mean over 1 functions; slower than ordito in 1potpourri3d943x (1)trimesh: 1304x ordito's time, geometric mean over 5 functions; slower than ordito in 5trimesh1304x (5)
Time relative to ordito (CUDA), geometric mean over the triangles 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
PyTorch3D (CUDA) 1.2x 1 1
MeshLib 16x 2 2
MeshLab 67x 2 2
Open3D 69x 1 1
NumPy 504x 1 1
libigl 543x 5 5
PyVista 553x 4 4
potpourri3d 943x 1 1
trimesh 1304x 5 5

face_normals_and_areas

0.1x1x10x100x1000x10000xordito (CUDA): 25.9 µs, 1x ordito's timeordito (CUDA)1x · 25.9 µsPyTorch3D (CUDA): 36.4 µs, 1.4x ordito's timePyTorch3D (CUDA)1.4x · 36.4 µsMeshLib: 1.35 ms, 52x ordito's timeMeshLib52x · 1.35 msOpen3D: 5.37 ms, 208x ordito's timeOpen3D208x · 5.37 mslibigl: 8.71 ms, 337x ordito's timelibigl337x · 8.71 msMeshLab: 12.86 ms, 497x ordito's timeMeshLab497x · 12.86 msPyVista: 57.01 ms, 2204x ordito's timePyVista2204x · 57.01 mspotpourri3d: 90.73 ms, 3508x ordito's timepotpourri3d3508x · 90.73 mstrimesh: 98.12 ms, 3794x ordito's timetrimesh3794x · 98.12 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 25.9 µs 1x
PyTorch3D (CUDA) 36.4 µs 1.4x
MeshLib 1.35 ms 52x
Open3D 5.37 ms 208x
libigl 8.71 ms 337x
MeshLab 12.86 ms 497x
PyVista 57.01 ms 2204x
potpourri3d 90.73 ms 3508x
trimesh 98.12 ms 3794x
All inputs
Input ordito (CUDA) libigl MeshLab MeshLib Open3D potpourri3d PyTorch3D (CUDA) PyVista trimesh
sphere_small 22.9 µs
bunny_decimated 26.2 µs 168.8 µs 189.4 µs 36.3 µs 84.2 µs 951.9 µs 22.0 µs 1.60 ms 710.6 µs
bunny 21.9 µs 754.8 µs 581.4 µs 103.3 µs 416.8 µs 5.42 ms 19.2 µs 5.01 ms 3.54 ms
dragon 25.9 µs 8.71 ms 12.86 ms 1.35 ms 5.37 ms 90.73 ms 36.4 µs 57.01 ms 98.12 ms
happy_buddha 27.3 µs 8.26 ms 16.74 ms 1.61 ms 7.57 ms 110.78 ms 41.0 µs 72.53 ms 129.34 ms
lucy 650.8 µs 520.97 ms 526.46 ms 165.87 ms 280.94 ms 3.786 s 1.07 ms 2.431 s 2.941 s

face_angles

0.1x1x10x100x1000x10000xordito (CUDA): 28.8 µs, 1x ordito's timeordito (CUDA)1x · 28.8 µslibigl: 88.42 ms, 3065x ordito's timelibigl3065x · 88.42 msPyVista: 136.17 ms, 4720x ordito's timePyVista4720x · 136.17 mstrimesh: 235.56 ms, 8166x ordito's timetrimesh8166x · 235.56 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 28.8 µs 1x
libigl 88.42 ms 3065x
PyVista 136.17 ms 4720x
trimesh 235.56 ms 8166x
All inputs
Input ordito (CUDA) libigl PyVista trimesh
sphere_small 23.4 µs
bunny_decimated 25.1 µs 3.05 ms 2.97 ms 2.48 ms
bunny 32.0 µs 6.25 ms 9.21 ms 11.68 ms
dragon 28.8 µs 88.42 ms 136.17 ms 235.56 ms
happy_buddha 40.1 µs 110.90 ms 162.49 ms 279.69 ms
lucy 567.9 µs 3.406 s 4.785 s 7.027 s

face_quality

0.1x1x10x100x1000x10000xordito (CUDA): 16.9 µs, 1x ordito's timeordito (CUDA)1x · 16.9 µsMeshLab: 535.1 µs, 32x ordito's timeMeshLab32x · 535.1 µsPyVista: 2.17 ms, 128x ordito's timePyVista128x · 2.17 mslibigl: 39.90 ms, 2358x ordito's timelibigl2358x · 39.90 ms
saddle (34 848 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 16.9 µs 1x
MeshLab 535.1 µs 32x
PyVista 2.17 ms 128x
libigl 39.90 ms 2358x
All inputs
Input ordito (CUDA) libigl MeshLab PyVista
saddle 16.9 µs 39.90 ms 535.1 µs 2.17 ms
saddle_graded 16.1 µs 41.12 ms 553.1 µs 2.19 ms

points_to_barycentric

0.1x1x10x100x1000x10000xordito (CUDA): 22.0 µs, 1x ordito's timeordito (CUDA)1x · 22.0 µslibigl: 99.31 ms, 4511x ordito's timelibigl4511x · 99.31 mstrimesh: 128.69 ms, 5845x ordito's timetrimesh5845x · 128.69 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 22.0 µs 1x
libigl 99.31 ms 4511x
trimesh 128.69 ms 5845x
All inputs
Input ordito (CUDA) libigl trimesh
sphere_small 20.8 µs
bunny_decimated 17.3 µs 827.1 µs 1.20 ms
bunny 16.1 µs 4.16 ms 5.41 ms
dragon 22.0 µs 99.31 ms 128.69 ms
happy_buddha 28.1 µs 117.87 ms 168.42 ms
lucy 780.7 µs 3.807 s 4.096 s

face_centroids

0.1x1x10x100x1000x10000xordito (CUDA): 26.5 µs, 1x ordito's timeordito (CUDA)1x · 26.5 µslibigl: 12.22 ms, 461x ordito's timelibigl461x · 12.22 msPyVista: 48.80 ms, 1840x ordito's timePyVista1840x · 48.80 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 26.5 µs 1x
libigl 12.22 ms 461x
PyVista 48.80 ms 1840x
All inputs
Input ordito (CUDA) libigl PyVista
sphere_small 28.6 µs
bunny_decimated 23.1 µs 187.5 µs 1.04 ms
bunny 22.7 µs 883.9 µs 3.76 ms
dragon 26.5 µs 12.22 ms 48.80 ms
happy_buddha 33.5 µs 15.19 ms 63.82 ms
lucy 575.0 µs 935.05 ms 2.318 s

barycentric_to_points

0.1x1x10x100x1000x10000xordito (CUDA): 21.1 µs, 1x ordito's timeordito (CUDA)1x · 21.1 µstrimesh: 88.36 ms, 4179x ordito's timetrimesh4179x · 88.36 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 21.1 µs 1x
trimesh 88.36 ms 4179x
All inputs
Input ordito (CUDA) trimesh
sphere_small 20.3 µs
bunny_decimated 25.6 µs 1.52 ms
bunny 21.5 µs 6.16 ms
dragon 21.1 µs 88.36 ms
happy_buddha 26.4 µs 103.63 ms
lucy 773.8 µs 2.762 s

face_signed_volumes

0.1x1x10x100x1000x10000xordito (CUDA): 22.2 µs, 1x ordito's timeordito (CUDA)1x · 22.2 µsNumPy: 52.56 ms, 2363x ordito's timeNumPy2363x · 52.56 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 22.2 µs 1x
NumPy 52.56 ms 2363x
All inputs
Input ordito (CUDA) NumPy
sphere_small 31.3 µs
bunny_decimated 17.9 µs 339.5 µs
bunny 22.2 µs 1.89 ms
dragon 22.2 µs 52.56 ms
happy_buddha 37.3 µs 65.25 ms
lucy 418.4 µs 2.049 s

face_nondegenerate_mask

0.1x1x10x100x1000x10000xordito (CUDA): 25.9 µs, 1x ordito's timeordito (CUDA)1x · 25.9 µstrimesh: 162.11 ms, 6270x ordito's timetrimesh6270x · 162.11 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 25.9 µs 1x
trimesh 162.11 ms 6270x
All inputs
Input ordito (CUDA) trimesh
sphere_small 30.4 µs
bunny_decimated 25.2 µs 2.12 ms
bunny 22.3 µs 9.19 ms
dragon 25.9 µs 162.11 ms
happy_buddha 35.7 µs 203.54 ms
lucy 356.3 µs 5.682 s

corner_normals

0.1x1x10x100xordito (CUDA): 248.4 µs, 1x ordito's timeordito (CUDA)1x · 248.4 µsMeshLib: 4.62 ms, 19x ordito's timeMeshLib19x · 4.62 ms
dragon (871 414 faces) · creased=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 248.4 µs 1x
MeshLib 4.62 ms 19x
All inputs
Input ordito (CUDA) MeshLib
sphere_small creased=False 200.9 µs
sphere_small creased=True 163.2 µs
bunny creased=False 138.5 µs 320.2 µs
bunny creased=True 198.5 µs 395.8 µs
dragon creased=False 248.4 µs 4.62 ms
dragon creased=True 499.9 µs 5.23 ms
happy_buddha creased=False 342.4 µs 21.41 ms
happy_buddha creased=True 632.1 µs 22.38 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)
triangle_closest_point lucy 761.6 µs