Skip to content

grouping

Benchmarks of ordito.grouping 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)1xtrimesh: 92x ordito's time, geometric mean over 4 functions; slower than ordito in 4trimesh92x (4)libigl: 156x ordito's time, geometric mean over 1 functions; slower than ordito in 1libigl156x (1)
Time relative to ordito (CUDA), geometric mean over the grouping 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
trimesh 92x 4 4
libigl 156x 1 1

group

0.1x1x10x100x1000x10000xordito (CUDA): 232.6 µs, 1x ordito's timeordito (CUDA)1x · 232.6 µstrimesh: 450.67 ms, 1938x ordito's timetrimesh1938x · 450.67 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 232.6 µs 1x
trimesh 450.67 ms 1938x
All inputs
Input ordito (CUDA) trimesh
sphere_small 113.2 µs
bunny_decimated 116.1 µs 6.86 ms
bunny 117.1 µs 29.15 ms
dragon 232.6 µs 450.67 ms
happy_buddha 302.2 µs 560.09 ms
lucy 10.72 ms 15.724 s

unique_faces

0.1x1x10x100x1000xordito (CUDA): 312.1 µs, 1x ordito's timeordito (CUDA)1x · 312.1 µstrimesh: 60.87 ms, 195x ordito's timetrimesh195x · 60.87 mslibigl: 93.30 ms, 299x ordito's timelibigl299x · 93.30 ms
dragon (871 414 faces) · duplicate_fraction=0.0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 312.1 µs 1x
trimesh 60.87 ms 195x
libigl 93.30 ms 299x
All inputs
Input ordito (CUDA) libigl trimesh
sphere_small duplicate_fraction=0.0 196.9 µs
sphere_small duplicate_fraction=0.5 208.5 µs
bunny_decimated duplicate_fraction=0.0 214.9 µs 4.68 ms 1.17 ms
bunny_decimated duplicate_fraction=0.5 198.5 µs 5.85 ms 1.79 ms
bunny duplicate_fraction=0.0 221.7 µs 11.55 ms 5.27 ms
bunny duplicate_fraction=0.5 253.0 µs 17.09 ms 8.50 ms
dragon duplicate_fraction=0.0 312.1 µs 93.30 ms 60.87 ms
dragon duplicate_fraction=0.5 401.0 µs 145.86 ms 98.08 ms
happy_buddha duplicate_fraction=0.0 382.5 µs 115.38 ms 75.50 ms
happy_buddha duplicate_fraction=0.5 456.6 µs 184.85 ms 121.10 ms
lucy duplicate_fraction=0.0 8.30 ms 4.084 s 9.663 s
lucy duplicate_fraction=0.5 12.11 ms 6.903 s 14.841 s

unique_rows

0.1x1x10x100xordito (CUDA): 228.9 µs, 1x ordito's timeordito (CUDA)1x · 228.9 µstrimesh: 3.29 ms, 14x ordito's timetrimesh14x · 3.29 ms
sphere_med (81 920 faces) · unique_fraction=1.0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 228.9 µs 1x
trimesh 3.29 ms 14x
All inputs
Input ordito (CUDA) trimesh
sphere_med unique_fraction=1.0 228.9 µs 3.29 ms
sphere_med unique_fraction=0.1 207.6 µs 3.08 ms

group_int_rows

0.1x1x10x100x1000xordito (CUDA): 487.0 µs, 1x ordito's timeordito (CUDA)1x · 487.0 µstrimesh: 106.21 ms, 218x ordito's timetrimesh218x · 106.21 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 487.0 µs 1x
trimesh 106.21 ms 218x
All inputs
Input ordito (CUDA) trimesh
sphere_small 162.7 µs
bunny_decimated 171.3 µs 1.22 ms
bunny 175.7 µs 5.29 ms
dragon 487.0 µs 106.21 ms
happy_buddha 554.7 µs 137.17 ms
lucy 19.30 ms 4.691 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)
unique_1d lucy 11.55 ms
hashed_occurrence_counts lucy 36.99 ms
first_occurrence_indices lucy 811.0 µs
hash_rows lucy 1.04 ms
hash_vector_rows lucy epsilon=0.0001 510.3 µs
hash_indices_rows lucy 989.4 µs
sorted_undirected_edge_keys lucy 11.22 ms