Skip to content

points

Benchmarks of ordito.points 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: 4.2x ordito's time, geometric mean over 5 functions; slower than ordito in 5MeshLib4.2x (5)PyTorch3D (CUDA): 4.5x ordito's time, geometric mean over 2 functions; slower than ordito in 2PyTorch3D (CUDA)4.5x (2)Open3D: 21x ordito's time, geometric mean over 8 functions; slower than ordito in 8Open3D21x (8)SciPy: 41x ordito's time, geometric mean over 2 functions; slower than ordito in 2SciPy41x (2)NumPy: 78x ordito's time, geometric mean over 2 functions; slower than ordito in 2NumPy78x (2)MeshLab: 106x ordito's time, geometric mean over 6 functions; slower than ordito in 6MeshLab106x (6)trimesh: 136x ordito's time, geometric mean over 8 functions; slower than ordito in 8trimesh136x (8)PyVista: 513x ordito's time, geometric mean over 5 functions; slower than ordito in 5PyVista513x (5)
Time relative to ordito (CUDA), geometric mean over the points 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 4.2x 5 5
PyTorch3D (CUDA) 4.5x 2 2
Open3D 21x 8 8
SciPy 41x 2 2
NumPy 78x 2 2
MeshLab 106x 6 6
trimesh 136x 8 8
PyVista 513x 5 5

point_plane_distance

0.1x1x10x100x1000x10000x100000xordito (CUDA): 23.5 µs, 1x ordito's timeordito (CUDA)1x · 23.5 µstrimesh: 3.00 ms, 128x ordito's timetrimesh128x · 3.00 msPyVista: 570.53 ms, 24322x ordito's timePyVista24322x · 570.53 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 23.5 µs 1x
trimesh 3.00 ms 128x
PyVista 570.53 ms 24322x
All inputs
Input ordito (CUDA) PyVista trimesh
sphere_small 25.6 µs
bunny_decimated 25.5 µs 10.76 ms 17.4 µs
bunny 25.3 µs 48.20 ms 57.9 µs
dragon 23.5 µs 570.53 ms 3.00 ms
happy_buddha 23.5 µs 930.56 ms 758.6 µs
lucy 159.0 µs 16.850 s 41.56 ms

fit_line

0.1x1x10x100x1000xordito (CUDA): 88.0 µs, 1x ordito's timeordito (CUDA)1x · 88.0 µsPyVista: 15.81 ms, 180x ordito's timePyVista180x · 15.81 mstrimesh: out of memorytrimeshout of memory
dragon (871 414 faces) · time relative to ordito, log scale · a red cross is a run that left no time
Values
Library Median Relative to ordito
ordito (CUDA) 88.0 µs 1x
PyVista 15.81 ms 180x
trimesh out of memory
All inputs
Input ordito (CUDA) PyVista trimesh
sphere_small 122.6 µs
bunny_decimated 77.3 µs 1.59 ms 479.20 ms
bunny 126.1 µs 2.64 ms 10.306 s
dragon 88.0 µs 15.81 ms out of memory
happy_buddha 129.0 µs 19.72 ms out of memory (predicted)
lucy 225.4 µs 962.55 ms out of memory (predicted)

half_space_mask

0.1x1x10x100x1000x10000x100000xordito (CUDA): 36.7 µs, 1x ordito's timeordito (CUDA)1x · 36.7 µsMeshLib: 153.4 µs, 4.2x ordito's timeMeshLib4.2x · 153.4 µsPyVista: 566.30 ms, 15416x ordito's timePyVista15416x · 566.30 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 36.7 µs 1x
MeshLib 153.4 µs 4.2x
PyVista 566.30 ms 15416x
All inputs
Input ordito (CUDA) MeshLib PyVista
sphere_small 41.2 µs
bunny_decimated 33.0 µs 38.5 µs 10.67 ms
bunny 33.3 µs 126.6 µs 47.81 ms
dragon 36.7 µs 153.4 µs 566.30 ms
happy_buddha 38.6 µs 289.6 µs 913.28 ms
lucy 145.4 µs 2.54 ms 16.689 s

principal_axes

0.1x1x10x100xordito (CUDA): 149.1 µs, 1x ordito's timeordito (CUDA)1x · 149.1 µsMeshLib: 621.2 µs, 4.2x ordito's timeMeshLib4.2x · 621.2 µsPyVista: 8.53 ms, 57x ordito's timePyVista57x · 8.53 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 149.1 µs 1x
MeshLib 621.2 µs 4.2x
PyVista 8.53 ms 57x
All inputs
Input ordito (CUDA) MeshLib PyVista
sphere_small 160.9 µs
bunny_decimated 146.8 µs 19.7 µs 205.3 µs
bunny 128.4 µs 59.5 µs 721.6 µs
dragon 149.1 µs 621.2 µs 8.53 ms
happy_buddha 164.9 µs 774.2 µs 10.69 ms
lucy 368.6 µs 29.05 ms 349.02 ms

fit_plane

0.1x1x10x100x1000xordito (CUDA): 134.2 µs, 1x ordito's timeordito (CUDA)1x · 134.2 µsMeshLib: 614.8 µs, 4.6x ordito's timeMeshLib4.6x · 614.8 µstrimesh: 9.10 ms, 68x ordito's timetrimesh68x · 9.10 msPyVista: 16.15 ms, 120x ordito's timePyVista120x · 16.15 msMeshLab: 28.83 ms, 215x ordito's timeMeshLab215x · 28.83 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 134.2 µs 1x
MeshLib 614.8 µs 4.6x
trimesh 9.10 ms 68x
PyVista 16.15 ms 120x
MeshLab 28.83 ms 215x
All inputs
Input ordito (CUDA) MeshLab MeshLib PyVista trimesh
sphere_small 143.0 µs
bunny_decimated 135.8 µs 359.4 µs 17.7 µs 2.45 ms 171.4 µs
bunny 108.4 µs 1.44 ms 83.6 µs 3.75 ms 784.0 µs
dragon 134.2 µs 28.83 ms 614.8 µs 16.15 ms 9.10 ms
happy_buddha 156.4 µs 40.30 ms 816.5 µs 20.26 ms 11.37 ms
lucy 358.4 µs 1.348 s 28.78 ms 960.31 ms 351.28 ms

vector_angle

0.1x1x10x100x1000xordito (CUDA): 21.5 µs, 1x ordito's timeordito (CUDA)1x · 21.5 µstrimesh: 7.71 ms, 358x ordito's timetrimesh358x · 7.71 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 21.5 µs 1x
trimesh 7.71 ms 358x
All inputs
Input ordito (CUDA) trimesh
sphere_small 20.6 µs
bunny_decimated 20.3 µs 96.1 µs
bunny 19.7 µs 435.0 µs
dragon 21.5 µs 7.71 ms
happy_buddha 26.8 µs 9.82 ms
lucy 265.6 µs 312.62 ms

radial_sort

0.1x1x10x100x1000xordito (CUDA): 186.4 µs, 1x ordito's timeordito (CUDA)1x · 186.4 µstrimesh: 23.72 ms, 127x ordito's timetrimesh127x · 23.72 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 186.4 µs 1x
trimesh 23.72 ms 127x
All inputs
Input ordito (CUDA) trimesh
sphere_small 170.6 µs
bunny_decimated 122.2 µs 230.5 µs
bunny 185.8 µs 1.15 ms
dragon 186.4 µs 23.72 ms
happy_buddha 185.2 µs 30.70 ms
lucy 2.95 ms 1.064 s

radius_outlier_mask

0.1x1x10x100xordito (CUDA): 186.7 µs, 1x ordito's timeordito (CUDA)1x · 186.7 µsOpen3D: 14.40 ms, 77x ordito's timeOpen3D77x · 14.40 ms
sphere_med (81 920 faces) · radius_scale=2.0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 186.7 µs 1x
Open3D 14.40 ms 77x
All inputs
Input ordito (CUDA) Open3D
sphere_small radius_scale=2.0 135.3 µs 748.0 µs
sphere_small radius_scale=4.0 179.6 µs 950.0 µs
sphere_med radius_scale=2.0 186.7 µs 14.40 ms
sphere_med radius_scale=4.0 302.2 µs 15.91 ms

point_duplicate_mask

0.1x1x10x100x1000xordito (CUDA): 53.3 µs, 1x ordito's timeordito (CUDA)1x · 53.3 µsMeshLib: 7.21 ms, 135x ordito's timeMeshLib135x · 7.21 msOpen3D: 25.01 ms, 469x ordito's timeOpen3D469x · 25.01 ms
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 53.3 µs 1x
MeshLib 7.21 ms 135x
Open3D 25.01 ms 469x
All inputs
Input ordito (CUDA) MeshLib Open3D
sphere_small 46.9 µs 296.1 µs 210.2 µs
sphere_med 49.1 µs 2.03 ms 3.98 ms
sphere_large 53.3 µs 7.21 ms 25.01 ms

farthest_point_sample

0.1x1x10xordito (CUDA): 695.3 µs, 1x ordito's timeordito (CUDA)1x · 695.3 µsPyTorch3D (CUDA): 1.75 ms, 2.5x ordito's timePyTorch3D (CUDA)2.5x · 1.75 msOpen3D: 2.26 ms, 3.3x ordito's timeOpen3D3.3x · 2.26 ms
sphere_med (81 920 faces) · count=64 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 695.3 µs 1x
PyTorch3D (CUDA) 1.75 ms 2.5x
Open3D 2.26 ms 3.3x
All inputs
Input ordito (CUDA) Open3D PyTorch3D (CUDA)
sphere_small count=64 83.5 µs 149.4 µs 244.0 µs
sphere_small count=1024 1.00 ms 2.26 ms 3.29 ms
sphere_med count=64 695.3 µs 2.26 ms 1.75 ms
sphere_med count=1024 10.12 ms 36.01 ms 27.32 ms

convex_hull

0.1x1x10x100x1000xordito (CUDA): 1.86 ms, 1x ordito's timeordito (CUDA)1x · 1.86 msOpen3D: 49.37 ms, 27x ordito's timeOpen3D27x · 49.37 msSciPy: 61.31 ms, 33x ordito's timeSciPy33x · 61.31 mstrimesh: 79.55 ms, 43x ordito's timetrimesh43x · 79.55 msMeshLab: 417.44 ms, 224x ordito's timeMeshLab224x · 417.44 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 1.86 ms 1x
Open3D 49.37 ms 27x
SciPy 61.31 ms 33x
trimesh 79.55 ms 43x
MeshLab 417.44 ms 224x
All inputs
Input ordito (CUDA) MeshLab Open3D SciPy trimesh
sphere_small 1.26 ms
bunny_decimated 1.19 ms 5.53 ms 2.46 ms 2.57 ms 4.78 ms
bunny 1.40 ms 22.21 ms 8.32 ms 9.10 ms 13.67 ms
dragon 1.86 ms 417.44 ms 49.37 ms 61.31 ms 79.55 ms
happy_buddha 2.86 ms 569.32 ms 74.43 ms 86.21 ms 121.12 ms
lucy 3.49 ms 15.489 s 1.446 s 1.609 s 2.525 s

convex_subset_mask

0.1x1x10x100x1000x10000xordito (CUDA): 204.9 µs, 1x ordito's timeordito (CUDA)1x · 204.9 µsOpen3D: 49.26 ms, 240x ordito's timeOpen3D240x · 49.26 mstrimesh: 79.13 ms, 386x ordito's timetrimesh386x · 79.13 msMeshLab: 423.88 ms, 2069x ordito's timeMeshLab2069x · 423.88 ms
dragon (871 414 faces) · n_directions=32 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 204.9 µs 1x
Open3D 49.26 ms 240x
trimesh 79.13 ms 386x
MeshLab 423.88 ms 2069x
All inputs
Input ordito (CUDA) MeshLab Open3D trimesh
sphere_small n_directions=32 86.3 µs
sphere_small n_directions=256 74.4 µs
bunny_decimated n_directions=32 75.6 µs 5.89 ms 2.42 ms 4.72 ms
bunny_decimated n_directions=256 93.6 µs 5.83 ms 2.47 ms 4.58 ms
bunny n_directions=32 84.3 µs 22.37 ms 8.46 ms 13.61 ms
bunny n_directions=256 140.4 µs 22.12 ms 8.39 ms 13.41 ms
dragon n_directions=32 204.9 µs 423.88 ms 49.26 ms 79.13 ms
dragon n_directions=256 227.7 µs 425.03 ms 48.87 ms 79.38 ms
happy_buddha n_directions=32 226.4 µs 573.16 ms 73.45 ms 123.15 ms
happy_buddha n_directions=256 272.0 µs 572.48 ms 75.94 ms 126.01 ms
lucy n_directions=32 749.4 µs 15.519 s 1.444 s 2.524 s
lucy n_directions=256 3.29 ms 15.537 s 1.446 s 2.531 s

convex_subset

0.1x1x10x100x1000x10000xordito (CUDA): 336.4 µs, 1x ordito's timeordito (CUDA)1x · 336.4 µsOpen3D: 50.26 ms, 149x ordito's timeOpen3D149x · 50.26 mstrimesh: 79.76 ms, 237x ordito's timetrimesh237x · 79.76 msMeshLab: 431.68 ms, 1283x ordito's timeMeshLab1283x · 431.68 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 336.4 µs 1x
Open3D 50.26 ms 149x
trimesh 79.76 ms 237x
MeshLab 431.68 ms 1283x
All inputs
Input ordito (CUDA) MeshLab Open3D trimesh
sphere_small 113.9 µs
bunny_decimated 126.8 µs 5.81 ms 2.49 ms 4.69 ms
bunny 154.6 µs 22.38 ms 8.43 ms 13.61 ms
dragon 336.4 µs 431.68 ms 50.26 ms 79.76 ms
happy_buddha 339.4 µs 569.03 ms 74.23 ms 123.53 ms
lucy 2.28 ms 15.633 s 1.456 s 2.512 s

convex_superset_mask

0.1x1x10x100x1000xordito (CUDA): 261.1 µs, 1x ordito's timeordito (CUDA)1x · 261.1 µsSciPy: 60.31 ms, 231x ordito's timeSciPy231x · 60.31 ms
dragon (871 414 faces) · subdivisions=1 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 261.1 µs 1x
SciPy 60.31 ms 231x
All inputs
Input ordito (CUDA) SciPy
sphere_small subdivisions=1 199.6 µs
sphere_small subdivisions=3 713.5 µs
bunny_decimated subdivisions=1 157.5 µs 2.60 ms
bunny_decimated subdivisions=3 407.7 µs 2.57 ms
bunny subdivisions=1 170.1 µs 9.04 ms
bunny subdivisions=3 492.4 µs 9.06 ms
dragon subdivisions=1 261.1 µs 60.31 ms
dragon subdivisions=3 791.4 µs 60.21 ms
happy_buddha subdivisions=1 303.4 µs 87.23 ms
happy_buddha subdivisions=3 935.0 µs 86.63 ms
lucy subdivisions=1 1.57 ms 1.597 s
lucy subdivisions=3 14.43 ms 1.596 s

centroid

0.1x1x10x100x1000xordito (CUDA): 23.0 µs, 1x ordito's timeordito (CUDA)1x · 23.0 µsNumPy: 4.52 ms, 196x ordito's timeNumPy196x · 4.52 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 23.0 µs 1x
NumPy 4.52 ms 196x
All inputs
Input ordito (CUDA) NumPy
sphere_small 35.4 µs
bunny_decimated 33.6 µs 148.2 µs
bunny 30.2 µs 451.3 µs
dragon 23.0 µs 4.52 ms
happy_buddha 41.6 µs 5.98 ms
lucy 146.2 µs 155.09 ms

covariance

0.1x1x10x100x1000xordito (CUDA): 64.0 µs, 1x ordito's timeordito (CUDA)1x · 64.0 µsNumPy: 10.21 ms, 159x ordito's timeNumPy159x · 10.21 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 64.0 µs 1x
NumPy 10.21 ms 159x
All inputs
Input ordito (CUDA) NumPy
sphere_small 50.2 µs
bunny_decimated 58.9 µs 315.5 µs
bunny 43.4 µs 765.8 µs
dragon 64.0 µs 10.21 ms
happy_buddha 57.3 µs 12.33 ms
lucy 305.7 µs 401.79 ms

estimate_normals_knn

0.1x1x10x100x1000xordito (CUDA): 952.3 µs, 1x ordito's timeordito (CUDA)1x · 952.3 µsMeshLib: 1.64 ms, 1.7x ordito's timeMeshLib1.7x · 1.64 msPyTorch3D (CUDA): 6.94 ms, 7.3x ordito's timePyTorch3D (CUDA)7.3x · 6.94 msOpen3D: 14.93 ms, 16x ordito's timeOpen3D16x · 14.93 msMeshLab: 125.65 ms, 132x ordito's timeMeshLab132x · 125.65 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 952.3 µs 1x
MeshLib 1.64 ms 1.7x
PyTorch3D (CUDA) 6.94 ms 7.3x
Open3D 14.93 ms 16x
MeshLab 125.65 ms 132x
All inputs
Input ordito (CUDA) MeshLab MeshLib Open3D PyTorch3D (CUDA)
sphere_small 383.6 µs 7.46 ms 298.9 µs 848.1 µs 2.69 ms
sphere_med 952.3 µs 125.65 ms 1.64 ms 14.93 ms 6.94 ms

outlier_probability

0.1x1x10x100xordito (CUDA): 855.9 µs, 1x ordito's timeordito (CUDA)1x · 855.9 µsMeshLab: 9.75 ms, 11x ordito's timeMeshLab11x · 9.75 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 855.9 µs 1x
MeshLab 9.75 ms 11x
All inputs
Input ordito (CUDA) MeshLab
sphere_small 346.7 µs 733.4 µs
sphere_med 855.9 µs 9.75 ms

statistical_outlier_mask

0.1x1x10x100xordito (CUDA): 850.9 µs, 1x ordito's timeordito (CUDA)1x · 850.9 µsOpen3D: 15.75 ms, 19x ordito's timeOpen3D19x · 15.75 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 850.9 µs 1x
Open3D 15.75 ms 19x
All inputs
Input ordito (CUDA) Open3D
sphere_small 337.1 µs 901.5 µs
sphere_med 850.9 µs 15.75 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)
centered_covariance lucy 307.4 µs
gram_matrix lucy 189.9 µs
plane_basis — 40.5 µs
estimate_normals sphere_large k=64 191.2 µs
point_finite_mask lucy 134.7 µs