Skip to content

registration

Benchmarks of ordito.registration 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.1x1x10x100xordito (CUDA): the reference, 1xordito (CUDA)1xOpen3D: 8.5x ordito's time, geometric mean over 4 functions; slower than ordito in 4Open3D8.5x (4)PyTorch3D (CUDA): 17x ordito's time, geometric mean over 2 functions; slower than ordito in 2PyTorch3D (CUDA)17x (2)PyVista: 21x ordito's time, geometric mean over 1 functions; slower than ordito in 1PyVista21x (1)trimesh: 44x ordito's time, geometric mean over 2 functions; slower than ordito in 2trimesh44x (2)MeshLib: 45x ordito's time, geometric mean over 3 functions; slower than ordito in 3MeshLib45x (3)MeshLab: 57x ordito's time, geometric mean over 1 functions; slower than ordito in 1MeshLab57x (1)
Time relative to ordito (CUDA), geometric mean over the registration 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
Open3D 8.5x 4 4
PyTorch3D (CUDA) 17x 2 2
PyVista 21x 1 1
trimesh 44x 2 2
MeshLib 45x 3 3
MeshLab 57x 1 1

procrustes

0.1x1x10x100x1000xordito (CUDA): 63.6 µs, 1x ordito's timeordito (CUDA)1x · 63.6 µsOpen3D: 391.5 µs, 6.2x ordito's timeOpen3D6.2x · 391.5 µsPyTorch3D (CUDA): 459.2 µs, 7.2x ordito's timePyTorch3D (CUDA)7.2x · 459.2 µstrimesh: 1.97 ms, 31x ordito's timetrimesh31x · 1.97 msMeshLib: 34.34 ms, 540x ordito's timeMeshLib540x · 34.34 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 63.6 µs 1x
Open3D 391.5 µs 6.2x
PyTorch3D (CUDA) 459.2 µs 7.2x
trimesh 1.97 ms 31x
MeshLib 34.34 ms 540x
All inputs
Input ordito (CUDA) MeshLib Open3D PyTorch3D (CUDA) trimesh
sphere_small 72.9 µs
bunny_decimated 73.2 µs 11.96 ms 82.0 µs 516.6 µs 812.1 µs
bunny 65.8 µs 33.08 ms 247.7 µs 477.1 µs 1.96 ms
dragon 63.6 µs 34.34 ms 391.5 µs 459.2 µs 1.97 ms
happy_buddha 64.9 µs 33.79 ms 408.3 µs 466.6 µs 2.00 ms
lucy 65.8 µs 31.41 ms 338.6 µs 471.1 µs 2.19 ms

icp_point_cloud

0.1x1x10x100x1000xordito (CUDA): 1.20 ms, 1x ordito's timeordito (CUDA)1x · 1.20 msMeshLib: 23.72 ms, 20x ordito's timeMeshLib20x · 23.72 msOpen3D: 50.79 ms, 42x ordito's timeOpen3D42x · 50.79 msPyTorch3D (CUDA): 130.96 ms, 109x ordito's timePyTorch3D (CUDA)109x · 130.96 mstrimesh: 227.39 ms, 189x ordito's timetrimesh189x · 227.39 ms
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 1.20 ms 1x
MeshLib 23.72 ms 20x
Open3D 50.79 ms 42x
PyTorch3D (CUDA) 130.96 ms 109x
trimesh 227.39 ms 189x
All inputs
Input ordito (CUDA) MeshLib Open3D PyTorch3D (CUDA) trimesh
sphere_small 726.8 µs 4.30 ms 1.88 ms 9.63 ms 12.21 ms
sphere_med 927.2 µs 16.80 ms 19.94 ms 39.41 ms 133.99 ms
sphere_large 1.20 ms 23.72 ms 50.79 ms 130.96 ms 227.39 ms

icp_point_to_plane_cloud

0.1x1x10x100xordito (CUDA): 1.21 ms, 1x ordito's timeordito (CUDA)1x · 1.21 msMeshLib: 30.12 ms, 25x ordito's timeMeshLib25x · 30.12 msOpen3D: 47.91 ms, 39x ordito's timeOpen3D39x · 47.91 ms
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 1.21 ms 1x
MeshLib 30.12 ms 25x
Open3D 47.91 ms 39x
All inputs
Input ordito (CUDA) MeshLib Open3D
sphere_small 765.7 µs 5.58 ms 1.35 ms
sphere_med 973.1 µs 26.37 ms 16.99 ms
sphere_large 1.21 ms 30.12 ms 47.91 ms

icp_point_to_plane_tukey

0.1x1x10x100xordito (CUDA): 1.20 ms, 1x ordito's timeordito (CUDA)1x · 1.20 msOpen3D: 48.89 ms, 41x ordito's timeOpen3D41x · 48.89 ms
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 1.20 ms 1x
Open3D 48.89 ms 41x
All inputs
Input ordito (CUDA) Open3D
sphere_small 927.8 µs 1.36 ms
sphere_med 1.10 ms 16.37 ms
sphere_large 1.20 ms 48.89 ms

icp_mesh

0.1x1x10x100x1000xordito (CUDA): 2.85 ms, 1x ordito's timeordito (CUDA)1x · 2.85 msPyVista: 88.66 ms, 31x ordito's timePyVista31x · 88.66 msMeshLab: 565.00 ms, 198x ordito's timeMeshLab198x · 565.00 ms
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 2.85 ms 1x
PyVista 88.66 ms 31x
MeshLab 565.00 ms 198x
All inputs
Input ordito (CUDA) MeshLab PyVista
sphere_small 1.25 ms 11.40 ms 39.63 ms
sphere_med 1.95 ms 204.23 ms 19.02 ms
sphere_large 2.85 ms 565.00 ms 88.66 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)
icp_convergence sphere_large degrees=45.0 1.02 ms
icp_point_to_plane_mesh sphere_large 3.04 ms