Skip to content

mesh

Benchmarks of ordito.mesh 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)1xtrimesh: 27x ordito's time, geometric mean over 13 functions; slower than ordito in 13trimesh27x (13)
Time relative to ordito (CUDA), geometric mean over the mesh 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 27x 13 13

mesh_vertex_normals

0.1x1x10x100x1000x10000xordito (CUDA): 143.4 µs, 1x ordito's timeordito (CUDA)1x · 143.4 µstrimesh: 449.26 ms, 3132x ordito's timetrimesh3132x · 449.26 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 143.4 µs 1x
trimesh 449.26 ms 3132x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 46.3 µs
sphere_small warm=True 3.4 µs
bunny_decimated warm=False 41.1 µs 4.21 ms
bunny_decimated warm=True 2.9 µs 2.5 µs
bunny warm=False 34.7 µs 20.96 ms
bunny warm=True 3.4 µs 2.4 µs
dragon warm=False 143.4 µs 449.26 ms
dragon warm=True 3.3 µs 3.9 µs
happy_buddha warm=False 176.7 µs 547.42 ms
happy_buddha warm=True 3.2 µs 4.0 µs
lucy warm=False 5.10 ms 12.807 s
lucy warm=True 2.7 µs 2.3 µs

mesh_face_adjacency

0.1x1x10x100x1000xordito (CUDA): 536.7 µs, 1x ordito's timeordito (CUDA)1x · 536.7 µstrimesh: 284.73 ms, 530x ordito's timetrimesh530x · 284.73 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 536.7 µs 1x
trimesh 284.73 ms 530x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 137.6 µs
sphere_small warm=True 3.4 µs
bunny_decimated warm=False 129.0 µs 3.86 ms
bunny_decimated warm=True 2.4 µs 2.2 µs
bunny warm=False 173.1 µs 18.81 ms
bunny warm=True 3.0 µs 2.1 µs
dragon warm=False 536.7 µs 284.73 ms
dragon warm=True 2.9 µs 2.4 µs
happy_buddha warm=False 640.3 µs 357.85 ms
happy_buddha warm=True 2.9 µs 2.2 µs
lucy warm=False 17.20 ms 10.840 s
lucy warm=True 2.5 µs 2.2 µs

mesh_boundary_loops

0.1x1x10x100x1000xordito (CUDA): 451.8 µs, 1x ordito's timeordito (CUDA)1x · 451.8 µstrimesh: 308.57 ms, 683x ordito's timetrimesh683x · 308.57 ms
rim_long (131 072 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 451.8 µs 1x
trimesh 308.57 ms 683x
All inputs
Input ordito (CUDA) trimesh
holes_many warm=False 493.7 µs 142.76 ms
holes_many warm=True 2.7 µs 135.17 ms
sphere_med warm=False 146.1 µs 13.36 ms
sphere_med warm=True 2.5 µs 4.69 ms
rim_long warm=False 451.8 µs 308.57 ms
rim_long warm=True 2.3 µs 294.75 ms

mesh_is_watertight

0.1x1x10x100x1000xordito (CUDA): 360.2 µs, 1x ordito's timeordito (CUDA)1x · 360.2 µstrimesh: 224.00 ms, 622x ordito's timetrimesh622x · 224.00 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 360.2 µs 1x
trimesh 224.00 ms 622x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 433.2 µs
sphere_small warm=True 3.5 µs
bunny_decimated warm=False 160.8 µs 3.19 ms
bunny_decimated warm=True 3.8 µs 2.6 µs
bunny warm=False 198.1 µs 15.16 ms
bunny warm=True 2.2 µs 2.6 µs
dragon warm=False 360.2 µs 224.00 ms
dragon warm=True 2.3 µs 2.4 µs
happy_buddha warm=False 6.26 ms 315.77 ms
happy_buddha warm=True 2.4 µs 3.8 µs
lucy warm=False 11.89 ms 9.645 s
lucy warm=True 2.2 µs 3.7 µs

mesh_triangles_center

0.1x1x10x100x1000x10000xordito (CUDA): 32.0 µs, 1x ordito's timeordito (CUDA)1x · 32.0 µstrimesh: 112.86 ms, 3525x ordito's timetrimesh3525x · 112.86 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 32.0 µs 1x
trimesh 112.86 ms 3525x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 46.1 µs
sphere_small warm=True 3.5 µs
bunny_decimated warm=False 22.7 µs 2.02 ms
bunny_decimated warm=True 3.1 µs 3.0 µs
bunny warm=False 23.1 µs 9.91 ms
bunny warm=True 3.3 µs 2.7 µs
dragon warm=False 32.0 µs 112.86 ms
dragon warm=True 3.1 µs 2.5 µs
happy_buddha warm=False 27.2 µs 140.44 ms
happy_buddha warm=True 4.1 µs 3.2 µs
lucy warm=False 564.4 µs 4.162 s
lucy warm=True 2.9 µs 2.9 µs

mesh_centroid

0.1x1x10x100x1000x10000xordito (CUDA): 96.0 µs, 1x ordito's timeordito (CUDA)1x · 96.0 µstrimesh: 197.10 ms, 2053x ordito's timetrimesh2053x · 197.10 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 96.0 µs 1x
trimesh 197.10 ms 2053x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 110.4 µs
sphere_small warm=True 4.2 µs
bunny_decimated warm=False 64.6 µs 3.16 ms
bunny_decimated warm=True 2.3 µs 3.0 µs
bunny warm=False 206.1 µs 15.87 ms
bunny warm=True 3.0 µs 2.7 µs
dragon warm=False 96.0 µs 197.10 ms
dragon warm=True 3.1 µs 2.4 µs
happy_buddha warm=False 125.1 µs 252.05 ms
happy_buddha warm=True 3.1 µs 2.2 µs
lucy warm=False 378.2 µs 7.286 s
lucy warm=True 2.7 µs 3.0 µs

mesh_center_mass

0.1x1x10x100x1000x10000xordito (CUDA): 310.9 µs, 1x ordito's timeordito (CUDA)1x · 310.9 µstrimesh: 632.62 ms, 2035x ordito's timetrimesh2035x · 632.62 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 310.9 µs 1x
trimesh 632.62 ms 2035x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 95.1 µs
sphere_small warm=True 5.9 µs
bunny_decimated warm=False 76.3 µs 8.05 ms
bunny_decimated warm=True 3.3 µs 2.9 µs
bunny warm=False 118.4 µs 36.48 ms
bunny warm=True 3.0 µs 3.1 µs
dragon warm=False 310.9 µs 632.62 ms
dragon warm=True 2.4 µs 3.1 µs
happy_buddha warm=False 410.4 µs 814.65 ms
happy_buddha warm=True 3.3 µs 3.3 µs
lucy warm=False 6.98 ms 22.638 s
lucy warm=True 1.9 µs 2.8 µs

mesh_moment_inertia

0.1x1x10x100x1000x10000xordito (CUDA): 318.5 µs, 1x ordito's timeordito (CUDA)1x · 318.5 µstrimesh: 638.88 ms, 2006x ordito's timetrimesh2006x · 638.88 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 318.5 µs 1x
trimesh 638.88 ms 2006x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 106.9 µs
sphere_small warm=True 2.7 µs
bunny_decimated warm=False 66.5 µs 8.22 ms
bunny_decimated warm=True 3.2 µs 2.6 µs
bunny warm=False 113.7 µs 36.37 ms
bunny warm=True 3.2 µs 2.9 µs
dragon warm=False 318.5 µs 638.88 ms
dragon warm=True 4.1 µs 2.9 µs
happy_buddha warm=False 410.4 µs 810.34 ms
happy_buddha warm=True 3.2 µs 2.6 µs
lucy warm=False 6.98 ms 22.356 s
lucy warm=True 2.9 µs 2.7 µs

mesh_extents

0.1x1x10x100x1000xordito (CUDA): 96.0 µs, 1x ordito's timeordito (CUDA)1x · 96.0 µstrimesh: 62.12 ms, 647x ordito's timetrimesh647x · 62.12 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 96.0 µs 1x
trimesh 62.12 ms 647x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 66.5 µs
sphere_small warm=True 4.3 µs
bunny_decimated warm=False 68.6 µs 1.28 ms
bunny_decimated warm=True 2.6 µs 3.1 µs
bunny warm=False 93.9 µs 4.74 ms
bunny warm=True 2.6 µs 2.8 µs
dragon warm=False 96.0 µs 62.12 ms
dragon warm=True 3.7 µs 2.5 µs
happy_buddha warm=False 93.7 µs 79.22 ms
happy_buddha warm=True 3.9 µs 2.5 µs
lucy warm=False 291.0 µs 2.787 s
lucy warm=True 2.5 µs 2.1 µs

mesh_edges_sorted

0.1x1x10x100x1000x10000xordito (CUDA): 40.5 µs, 1x ordito's timeordito (CUDA)1x · 40.5 µstrimesh: 116.31 ms, 2870x ordito's timetrimesh2870x · 116.31 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 40.5 µs 1x
trimesh 116.31 ms 2870x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 34.9 µs
sphere_small warm=True 3.2 µs
bunny_decimated warm=False 21.1 µs 1.72 ms
bunny_decimated warm=True 3.1 µs 3.2 µs
bunny warm=False 31.6 µs 7.12 ms
bunny warm=True 3.4 µs 2.7 µs
dragon warm=False 40.5 µs 116.31 ms
dragon warm=True 2.7 µs 2.6 µs
happy_buddha warm=False 48.2 µs 139.91 ms
happy_buddha warm=True 3.8 µs 2.8 µs
lucy warm=False 706.4 µs 4.242 s
lucy warm=True 3.0 µs 2.8 µs

mesh_faces_unique_edges

0.1x1x10x100x1000xordito (CUDA): 377.8 µs, 1x ordito's timeordito (CUDA)1x · 377.8 µstrimesh: 301.91 ms, 799x ordito's timetrimesh799x · 301.91 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 377.8 µs 1x
trimesh 301.91 ms 799x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 170.4 µs
sphere_small warm=True 4.3 µs
bunny_decimated warm=False 145.9 µs 5.09 ms
bunny_decimated warm=True 2.0 µs 2.8 µs
bunny warm=False 190.0 µs 21.54 ms
bunny warm=True 3.3 µs 2.4 µs
dragon warm=False 377.8 µs 301.91 ms
dragon warm=True 1.9 µs 2.3 µs
happy_buddha warm=False 451.7 µs 364.85 ms
happy_buddha warm=True 4.0 µs 2.8 µs
lucy warm=False 12.61 ms 11.609 s
lucy warm=True 1.9 µs 2.8 µs

mesh_is_winding_consistent

0.1x1x10x100x1000x10000xordito (CUDA): 173.8 µs, 1x ordito's timeordito (CUDA)1x · 173.8 µstrimesh: 240.30 ms, 1383x ordito's timetrimesh1383x · 240.30 ms
dragon (871 414 faces) · warm=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 173.8 µs 1x
trimesh 240.30 ms 1383x
All inputs
Input ordito (CUDA) trimesh
sphere_small warm=False 152.2 µs
sphere_small warm=True 3.6 µs
bunny_decimated warm=False 112.8 µs 4.18 ms
bunny_decimated warm=True 3.3 µs 2.7 µs
bunny warm=False 118.6 µs 16.21 ms
bunny warm=True 3.1 µs 2.7 µs
dragon warm=False 173.8 µs 240.30 ms
dragon warm=True 3.1 µs 2.5 µs
happy_buddha warm=False 212.4 µs 303.49 ms
happy_buddha warm=True 3.9 µs 2.5 µs
lucy warm=False 4.65 ms 10.487 s
lucy warm=True 2.2 µs 2.6 µs

mesh_contains

0.1x1x10xordito (CUDA): 5.33 ms, 1x ordito's timeordito (CUDA)1x · 5.33 mstrimesh: 6.46 ms, 1.2x ordito's timetrimesh1.2x · 6.46 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 5.33 ms 1x
trimesh 6.46 ms 1.2x
All inputs
Input ordito (CUDA) trimesh
shells_8 2.74 ms 17.68 ms
sphere_med 5.33 ms 6.46 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)
mesh_warp_mesh lucy warm=True 2.0 µs
mesh_vector_heat_operators sphere_large warm=True 4.1 µs
mesh_invalidation lucy mode=with_faces 17.22 ms
mesh_carry_directions lucy mode=rotate 1.02 ms
mesh_from_warp_mesh sphere_small 8.2 µs
mesh_traced_mesh lucy warm=True 2.5 µs
mesh_mesh_for_rays lucy n_rays=1099511627776 3.858 s
mesh_halfedge_mates lucy warm=True 2.3 µs
mesh_oriented_boundary_edges lucy warm=True 2.8 µs
mesh_boundary_vertex_indices lucy warm=True 2.0 µs
mesh_is_orientable lucy warm=True 2.0 µs
mesh_is_self_intersecting lucy warm=True 2.4 µs
mesh_mesh_operator_pattern lucy warm=True 1.9 µs
mesh_laplacian_operator lucy warm=True 2.1 µs
mesh_heat_solver sphere_small warm=True 6.5 µs
mesh_fixed_vertex_solver sphere_small warm=True 4.6 µs