Avatar for the zarr-developers user
zarr-developers
zarr-python
BlogDocsChangelog

perf: Optimize Morton order with hypercube and vectorization

#3708Merged
Comparing
mkitti:mkitti-morton-decode-optimization
(
4a342c9
) with
main
(
36caf1f
)
CodSpeed Performance Gauge
×7.1
Improvement
4
Untouched
52
Skipped
6

Benchmarks

62 total
test_morton_order_iter[(32, 32, 32)]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
×7.1
502.6 ms70.7 ms
test_morton_order_iter[(16, 16, 16)]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
×6.8
56.2 ms8.3 ms
test_morton_order_iter[(8, 8, 8)]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
×5.4
6.2 ms1.1 ms
test_sharded_morton_write_single_chunk[(32, 32, 32)-memory]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+74%
953.3 ms548.4 ms
test_write_array[local-Layout(shape=(1000000,), chunks=(1000,), shards=None)-gzip]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+3%
1.7 s1.6 s
test_read_array[memory-Layout(shape=(1000000,), chunks=(100,), shards=(1000000,))-gzip]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+2%
6 s5.9 s
test_read_array[memory-Layout(shape=(1000000,), chunks=(1000,), shards=None)-None]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+2%
282 ms277.5 ms
test_slice_indexing[None-(slice(10, -10, 4), slice(10, -10, 4), slice(10, -10, 4))-memory]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+2%
208.1 ms204.9 ms
test_read_array[local-Layout(shape=(1000000,), chunks=(100,), shards=(1000000,))-None]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+1%
2.9 s2.9 s
test_slice_indexing[None-(slice(10, -10, 4), slice(10, -10, 4), slice(10, -10, 4))-memory_get_latency]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
236.7 ms233.4 ms
test_slice_indexing[None-(slice(None, None, None), slice(None, None, None), slice(None, None, None))-memory]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
384 ms378.9 ms
test_read_array[memory-Layout(shape=(1000000,), chunks=(1000,), shards=(1000,))-gzip]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+1%
1.3 s1.3 s
test_slice_indexing[None-(slice(0, None, 4), slice(0, None, 4), slice(0, None, 4))-memory_get_latency]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
433.5 ms428 ms
test_sharded_morton_indexing_large[(32, 32, 32)-memory]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
9.5 s9.4 s
test_write_array[memory-Layout(shape=(1000000,), chunks=(1000,), shards=None)-None]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+1%
561.6 ms555 ms
test_slice_indexing[None-(slice(0, None, 4), slice(0, None, 4), slice(0, None, 4))-memory]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
379.8 ms375.5 ms
test_write_array[memory-Layout(shape=(1000000,), chunks=(100,), shards=(1000000,))-None]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+1%
5.5 s5.5 s
test_write_array[local-Layout(shape=(1000000,), chunks=(1000,), shards=(1000,))-None]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+1%
2.8 s2.8 s
test_read_array[local-Layout(shape=(1000000,), chunks=(1000,), shards=(1000,))-gzip]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+1%
1.8 s1.7 s
test_write_array[memory-Layout(shape=(1000000,), chunks=(100,), shards=(1000000,))-gzip]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+1%
9.7 s9.6 s
test_read_array[memory-Layout(shape=(1000000,), chunks=(100,), shards=(1000000,))-None]
tests/benchmarks/test_e2e.py
CodSpeed Performance Gauge
+1%
2.9 s2.9 s
test_slice_indexing[(50, 50, 50)-(slice(0, None, 4), slice(0, None, 4), slice(0, None, 4))-memory_get_latency]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
433.2 ms428.7 ms
test_sharded_morton_indexing[(32, 32, 32)-memory]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
1.2 s1.2 s
test_slice_indexing[(50, 50, 50)-(slice(None, None, None), slice(None, None, None), slice(None, None, None))-memory_get_latency]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
438.8 ms434.4 ms
test_slice_indexing[None-(slice(None, None, None), slice(None, None, None), slice(None, None, None))-memory_get_latency]
tests/benchmarks/test_indexing.py
CodSpeed Performance Gauge
+1%
436.1 ms431.7 ms

Commits

Click on a commit to change the comparison range
Base
main
36caf1f
+0.76%
fix:Address type annotation and linting issues
ef18210
1 month ago
by mkitti
-0.5%
test: Add Morton order benchmarks with cache clearing
443b5d4
1 month ago
by mkitti
+0.59%
fix:Bound LRU cache of _morton_order to 16
1cdcbdf
1 month ago
by mkitti
-2.47%
Merge branch 'main' into mkitti-morton-decode-optimization
536f520
1 month ago
by d-v-b
+3.62%
Merge branch 'main' into mkitti-morton-decode-optimization
65205b3
1 month ago
by d-v-b
-1.69%
tests:Add single chunk write test for sharding
a666211
30 days ago
by mkitti
×7.2
Merge branch 'main' into mkitti-morton-decode-optimization
38d2e04
28 days ago
by d-v-b
-4.91%
Update 3708.misc.md
4a342c9
27 days ago
by mkitti
© 2026 CodSpeed Technology
Home Terms Privacy Docs