Skip to content

feat(arrow-row): add MSD radix sort kernel for row-encoded keys - #9683

Draft
mbutrovich wants to merge 42 commits into
apache:mainfrom
mbutrovich:radix_row_sort
Draft

mbutrovich wants to merge 42 commits into
apache:mainfrom
mbutrovich:radix_row_sort

Conversation

@mbutrovich

@mbutrovich mbutrovich commented Apr 9, 2026 •

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

N/A.

Rationale for this change

Sorting on several columns is a common step in table rewrites, sort-merge joins, and ORDER BY with a composite key. Today lexsort_to_indices calls a dynamically dispatched comparator per column on every comparison. Row-encoded keys compare as bytes, so Rows can instead be sorted by MSD radix sort, which reads a fixed-size key from each row once per pass. DuckDB's sort redesign takes the same approach.

Why we want it

On the benchmark bot, multi-column keys sort 2x to 6x faster than lexsort_to_indices on most cases, including the cost of encoding to Rows. It also beats lexsort_rows, which sorts the same Rows by comparison, in every case.

Engines built on arrow-rs could use it in sort-heavy paths. Two examples are a Comet or DataFusion Iceberg table rewrite with a sort order and a sort-merge join on a composite key. I haven't measured either.

Trade-offs

  • It is slower than lexsort_to_indices on a single nullable column (0.36x to 0.81x), a single string column (0.64x to 0.86x), and keys with a list column such as [i32, str_list(4)] (0.20x to 0.75x), because the row format encodes every column of every row.
  • It is also slower when large groups of rows share their first 12 bytes after the common prefix, such as three or more low-cardinality columns.
  • With a limit it stops ordering rows early, but it still encodes and makes one pass over every row. On [i64(0..1000), i32] at 32768 rows, lexsort_to_indices is faster at limit 100 (radix sort at 0.28x to 0.36x) and radix sort is faster from limit 1000 (1.28x to 1.68x). At 1M rows, lexsort_to_indices is faster at limit 100 and 1000 (0.09x to 0.18x).
  • It allocates two 16-byte buffers per row on top of the result.
  • arrow_row::radix is new public API, so the module is permanent once released.

The module docs list when to use each sort.

What changes are included in this PR?

  • Adds arrow_row::radix::radix_sort_to_indices, a radix sort of Rows with an optional limit. The module docs say when to use it and when to prefer lexsort_to_indices.
  • Adds lexsort_radix to arrow/benches/lexsort.rs next to lexsort_to_indices and lexsort_rows. It encodes the columns and sorts them.
  • Adds encode to the same benchmark. It runs only the encoding, so the difference between it and lexsort_radix is the sort.
  • Adds lexsort_to_indices and lexsort_radix cases with a limit of 100, 1000, and n/10 on three keys at 32768 and 1M rows.
  • Adds single-column cases, cases with shared leading bytes, and two integer keys that also run at 1M rows.

Benchmarks

radix-sort-bot-03ee81c

These numbers are from the benchmark bot at 03ee81c. lexsort_radix includes encoding the rows. Radix sort is faster than lexsort_rows, which sorts the same Rows by comparison, in every case on both CPUs. Against lexsort_to_indices, it is faster in both the default and aligned runs in 43 of 64 cases on the Xeon and 50 on Neoverse-V2, and slower in 19 and 14. It loses on a single nullable or string column, such as [i32_opt] (0.49x to 0.59x on the Xeon), and on keys with a list column, such as [i32, str_list(4)] (0.20x to 0.29x). At 1M rows, the two integer keys are 2.22x to 3.35x faster on the Xeon and 4.26x to 5.33x on Neoverse-V2.

radix-sort-limit-bot-03ee81c

The chart shows [i64(0..1000), i32] with a limit. The other two keys in the benchmark show the same pattern, and the tables below list all three. At limit n/10, radix sort is 2.89x to 4.60x faster than lexsort_to_indices across the three keys and both CPUs. The bot prints milliseconds to one decimal place, so the 1M-row ratios are coarse.

The 76 cases already on main are within 0.93x to 1.13x of the merge base in all four runs, with medians of 0.98x to 1.00x.

All cases

Speedup is the baseline's time divided by lexsort_radix's time. The aligned run sets -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6 on both sides. The bot prints milliseconds to one decimal place.

Xeon Platinum 8581C:

Case Rows lexsort_to_indices Speedup (default / aligned) lexsort_rows Speedup (default / aligned)
[decimal128(18,2), i32] 4096 162.7 us 1.62x / 1.54x 219.1 us 2.18x / 2.13x
[dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)] 4096 807.5 us 2.75x / 2.70x 488.5 us 1.66x / 1.65x
[dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)] 4096 869.2 us 2.53x / 2.63x 587.7 us 1.71x / 1.79x
[dict(100,str_opt(50)), dict(100,str_opt(50))] 4096 363.3 us 1.88x / 1.88x 255.0 us 1.32x / 1.32x
[f64] 4096 62.5 us 1.12x / 1.12x 192.7 us 3.47x / 3.43x
[f64_opt] 4096 52.4 us 0.59x / 0.62x 168.1 us 1.91x / 2.02x
[i32(0..10), i32(0..10), i32(0..10)] 4096 408.2 us 3.43x / 3.21x 213.4 us 1.79x / 1.92x
[i32(1..204K), i64(0..n/10)] 4096 159.2 us 2.95x / 2.53x 194.3 us 3.60x / 3.50x
[i32, i32_list, str(16)] 4096 155.7 us 0.73x / 0.71x 428.4 us 2.01x / 2.14x
[i32, i32_opt] 4096 160.2 us 3.24x / 2.80x 193.8 us 3.92x / 3.94x
[i32, str(16)] 4096 159.2 us 2.16x / 1.80x 207.8 us 2.82x / 2.79x
[i32, str_list(4)] 4096 161.1 us 0.25x / 0.20x 881.7 us 1.34x / 1.34x
[i32, str_list_opt(4)] 4096 156.9 us 0.24x / 0.21x 914.7 us 1.38x / 1.40x
[i32, str_opt(16)] 4096 153.2 us 1.55x / 1.49x 226.9 us 2.29x / 2.52x
[i32] 4096 41.3 us 0.94x / 0.96x 188.7 us 4.31x / 4.36x
[i32_list_opt, i32_opt] 4096 432.2 us 1.85x / 2.06x 392.7 us 1.68x / 1.79x
[i32_opt, dict(100,str_opt(50))] 4096 251.2 us 2.14x / 2.37x 277.8 us 2.37x / 2.49x
[i32_opt, i32_list] 4096 237.1 us 1.15x / 1.25x 404.8 us 1.97x / 2.09x
[i32_opt, i32_list_opt, str_opt(50)] 4096 276.8 us 0.99x / 1.07x 436.6 us 1.56x / 1.69x
[i32_opt, i32_list_opt] 4096 245.5 us 1.12x / 1.28x 422.8 us 1.93x / 2.03x
[i32_opt] 4096 36.7 us 0.59x / 0.57x 158.5 us 2.53x / 2.61x
[i64(0..1000), i32] 4096 186.7 us 3.16x / 2.91x 193.1 us 3.27x / 3.34x
[i64] 4096 46.3 us 1.05x / 1.11x 185.3 us 4.18x / 4.53x
[i64_opt] 4096 41.8 us 0.62x / 0.70x 161.3 us 2.39x / 2.83x
[str(16)] 4096 52.0 us 0.67x / 0.64x 199.8 us 2.56x / 2.49x
[str_list(4), i32] 4096 496.4 us 0.71x / 0.71x 821.1 us 1.17x / 1.18x
[str_list_opt(4), i32] 4096 642.8 us 0.93x / 0.93x 829.3 us 1.20x / 1.19x
[str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)] 4096 373.9 us 1.51x / 1.69x 363.6 us 1.47x / 1.55x
[str_opt(16), str(16)] 4096 356.1 us 2.60x / 2.77x 258.4 us 1.89x / 1.90x
[str_opt(16), str_opt(50), str(16)] 4096 402.7 us 1.98x / 2.08x 318.0 us 1.56x / 1.58x
[str_opt(16)] 4096 45.0 us 0.36x / 0.36x 200.4 us 1.59x / 1.70x
[decimal128(18,2), i32] 32768 1.7 ms 1.81x / 1.77x 2.3 ms 2.45x / 2.48x
[dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)] 32768 9.1 ms 2.39x / 2.53x 5.9 ms 1.55x / 1.61x
[dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)] 32768 9.2 ms 2.24x / 2.24x 6.7 ms 1.63x / 1.64x
[dict(100,str_opt(50)), dict(100,str_opt(50))] 32768 2.9 ms 1.45x / 1.50x 2.6 ms 1.30x / 1.30x
[f64] 32768 822.8 us 1.05x / 1.08x 2.0 ms 2.55x / 2.74x
[f64_opt] 32768 677.6 us 0.81x / 0.79x 1.8 ms 2.14x / 2.27x
[i32(0..10), i32(0..10), i32(0..10)] 32768 3.8 ms 5.17x / 4.60x 1.9 ms 2.54x / 2.58x
[i32(1..204K), i64(0..n/10)] 32768 1.7 ms 1.65x / 1.62x 2.1 ms 2.07x / 2.24x
[i32, i32_list, str(16)] 32768 1.6 ms 0.86x / 0.81x 4.2 ms 2.26x / 2.38x
[i32, i32_opt] 32768 1.6 ms 2.82x / 2.48x 2.1 ms 3.69x / 3.82x
[i32, str(16)] 32768 1.6 ms 2.27x / 1.92x 2.2 ms 3.14x / 3.09x
[i32, str_list(4)] 32768 1.6 ms 0.29x / 0.26x 8.1 ms 1.47x / 1.46x
[i32, str_list_opt(4)] 32768 1.6 ms 0.28x / 0.26x 8.3 ms 1.46x / 1.47x
[i32, str_opt(16)] 32768 1.5 ms 1.72x / 1.61x 2.4 ms 2.68x / 2.70x
[i32] 32768 498.6 us 1.11x / 1.11x 2.0 ms 4.39x / 4.58x
[i32_list_opt, i32_opt] 32768 4.6 ms 2.09x / 2.04x 4.2 ms 1.91x / 1.87x
[i32_opt, dict(100,str_opt(50))] 32768 2.5 ms 1.89x / 1.93x 2.7 ms 2.04x / 2.15x
[i32_opt, i32_list] 32768 2.5 ms 1.25x / 1.30x 3.9 ms 1.95x / 2.00x
[i32_opt, i32_list_opt, str_opt(50)] 32768 3.0 ms 1.07x / 1.14x 4.6 ms 1.64x / 1.64x
[i32_opt, i32_list_opt] 32768 2.8 ms 1.33x / 1.26x 4.0 ms 1.90x / 1.87x
[i32_opt] 32768 430.2 us 0.49x / 0.49x 1.8 ms 2.06x / 2.17x
[i64(0..1000), i32] 32768 2.6 ms 2.48x / 2.53x 2.1 ms 2.00x / 2.10x
[i64] 32768 697.0 us 1.51x / 1.44x 2.0 ms 4.34x / 4.43x
[i64_opt] 32768 565.1 us 0.65x / 0.68x 1.9 ms 2.15x / 2.25x
[str(16)] 32768 653.3 us 0.84x / 0.82x 2.2 ms 2.82x / 2.80x
[str_list(4), i32] 32768 6.0 ms 1.00x / 1.02x 7.5 ms 1.25x / 1.25x
[str_list_opt(4), i32] 32768 7.3 ms 1.22x / 1.21x 7.4 ms 1.23x / 1.25x
[str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)] 32768 4.0 ms 1.67x / 1.75x 3.8 ms 1.58x / 1.62x
[str_opt(16), str(16)] 32768 4.1 ms 3.15x / 3.05x 2.6 ms 2.00x / 2.01x
[str_opt(16), str_opt(50), str(16)] 32768 4.1 ms 2.25x / 2.30x 3.2 ms 1.76x / 1.78x
[str_opt(16)] 32768 548.5 us 0.49x / 0.49x 2.2 ms 1.95x / 1.93x
[i32(0..10), i32(0..10), i32(0..10)] 1048576 133.1 ms 3.35x / 3.20x 78.4 ms 1.97x / 2.08x
[i32(1..204K), i64(0..n/10)] 1048576 104.0 ms 2.48x / 2.22x 104.4 ms 2.49x / 2.30x

Neoverse-V2:

Case Rows lexsort_to_indices Speedup (default / aligned) lexsort_rows Speedup (default / aligned)
[decimal128(18,2), i32] 4096 264.2 us 3.18x / 3.32x 180.9 us 2.17x / 2.25x
[dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)] 4096 1.0 ms 3.25x / 3.31x 498.2 us 1.61x / 1.61x
[dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)] 4096 1.0 ms 3.19x / 3.14x 553.4 us 1.69x / 1.66x
[dict(100,str_opt(50)), dict(100,str_opt(50))] 4096 456.8 us 2.40x / 2.34x 244.9 us 1.29x / 1.28x
[f64] 4096 48.9 us 1.17x / 1.14x 158.4 us 3.78x / 3.68x
[f64_opt] 4096 41.4 us 0.57x / 0.57x 138.4 us 1.91x / 1.88x
[i32(0..10), i32(0..10), i32(0..10)] 4096 415.5 us 3.89x / 3.85x 159.1 us 1.49x / 1.47x
[i32(1..204K), i64(0..n/10)] 4096 235.7 us 5.57x / 5.44x 163.3 us 3.86x / 3.75x
[i32, i32_list, str(16)] 4096 239.2 us 1.52x / 1.53x 281.7 us 1.79x / 1.79x
[i32, i32_opt] 4096 239.6 us 6.11x / 6.03x 160.7 us 4.10x / 4.05x
[i32, str(16)] 4096 235.6 us 3.45x / 3.47x 177.4 us 2.60x / 2.61x
[i32, str_list(4)] 4096 238.6 us 0.57x / 0.58x 594.7 us 1.41x / 1.45x
[i32, str_list_opt(4)] 4096 238.0 us 0.58x / 0.59x 579.6 us 1.42x / 1.43x
[i32, str_opt(16)] 4096 237.8 us 3.45x / 3.48x 227.2 us 3.29x / 3.35x
[i32] 4096 44.3 us 1.30x / 1.26x 156.1 us 4.58x / 4.49x
[i32_list_opt, i32_opt] 4096 516.8 us 2.86x / 2.66x 269.1 us 1.49x / 1.43x
[i32_opt, dict(100,str_opt(50))] 4096 331.8 us 3.24x / 3.30x 222.4 us 2.17x / 2.19x
[i32_opt, i32_list] 4096 308.1 us 1.99x / 2.06x 297.7 us 1.92x / 1.96x
[i32_opt, i32_list_opt, str_opt(50)] 4096 363.7 us 1.75x / 1.60x 326.7 us 1.57x / 1.51x
[i32_opt, i32_list_opt] 4096 330.6 us 2.03x / 1.94x 309.0 us 1.90x / 1.78x
[i32_opt] 4096 37.8 us 0.72x / 0.71x 130.8 us 2.48x / 2.58x
[i64(0..1000), i32] 4096 272.9 us 5.63x / 5.67x 162.2 us 3.34x / 3.35x
[i64] 4096 43.1 us 1.25x / 1.23x 153.5 us 4.45x / 4.38x
[i64_opt] 4096 37.2 us 0.73x / 0.73x 135.7 us 2.65x / 2.63x
[str(16)] 4096 52.3 us 0.69x / 0.69x 180.5 us 2.38x / 2.38x
[str_list(4), i32] 4096 589.1 us 1.31x / 1.31x 554.0 us 1.24x / 1.22x
[str_list_opt(4), i32] 4096 683.4 us 1.55x / 1.54x 537.1 us 1.22x / 1.24x
[str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)] 4096 462.0 us 2.42x / 2.45x 286.5 us 1.50x / 1.47x
[str_opt(16), str(16)] 4096 454.8 us 3.71x / 3.71x 212.7 us 1.73x / 1.72x
[str_opt(16), str_opt(50), str(16)] 4096 474.5 us 2.92x / 2.97x 258.4 us 1.59x / 1.56x
[str_opt(16)] 4096 44.3 us 0.43x / 0.44x 161.4 us 1.58x / 1.59x
[decimal128(18,2), i32] 32768 3.1 ms 4.42x / 4.64x 2.0 ms 2.80x / 2.93x
[dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)] 32768 12.7 ms 3.26x / 3.57x 6.9 ms 1.77x / 1.83x
[dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)] 32768 12.5 ms 3.05x / 3.18x 7.2 ms 1.76x / 1.76x
[dict(100,str_opt(50)), dict(100,str_opt(50))] 32768 3.7 ms 1.86x / 1.88x 2.6 ms 1.31x / 1.37x
[f64] 32768 596.4 us 1.03x / 1.03x 1.7 ms 2.93x / 2.93x
[f64_opt] 32768 489.6 us 0.73x / 0.73x 1.5 ms 2.27x / 2.26x
[i32(0..10), i32(0..10), i32(0..10)] 32768 4.0 ms 6.13x / 6.00x 1.3 ms 1.97x / 1.92x
[i32(1..204K), i64(0..n/10)] 32768 2.7 ms 3.64x / 3.52x 1.7 ms 2.31x / 2.22x
[i32, i32_list, str(16)] 32768 2.7 ms 1.78x / 1.78x 3.1 ms 2.05x / 2.04x
[i32, i32_opt] 32768 2.7 ms 6.44x / 6.37x 1.8 ms 4.22x / 4.16x
[i32, str(16)] 32768 2.7 ms 4.28x / 4.24x 1.9 ms 3.03x / 2.97x
[i32, str_list(4)] 32768 2.7 ms 0.47x / 0.66x 7.7 ms 1.35x / 1.59x
[i32, str_list_opt(4)] 32768 2.7 ms 0.63x / 0.75x 7.1 ms 1.65x / 1.64x
[i32, str_opt(16)] 32768 2.7 ms 3.71x / 3.73x 2.6 ms 3.58x / 3.59x
[i32] 32768 446.3 us 1.26x / 1.25x 1.6 ms 4.66x / 4.66x
[i32_list_opt, i32_opt] 32768 5.7 ms 3.11x / 3.09x 2.9 ms 1.58x / 1.57x
[i32_opt, dict(100,str_opt(50))] 32768 3.5 ms 3.06x / 3.06x 2.6 ms 2.27x / 2.36x
[i32_opt, i32_list] 32768 3.6 ms 2.14x / 2.14x 3.1 ms 1.85x / 1.85x
[i32_opt, i32_list_opt, str_opt(50)] 32768 4.1 ms 1.86x / 1.86x 3.7 ms 1.68x / 1.68x
[i32_opt, i32_list_opt] 32768 3.8 ms 2.12x / 2.11x 3.2 ms 1.78x / 1.77x
[i32_opt] 32768 373.5 us 0.56x / 0.56x 1.5 ms 2.17x / 2.18x
[i64(0..1000), i32] 32768 3.6 ms 4.60x / 4.62x 1.7 ms 2.18x / 2.17x
[i64] 32768 464.8 us 1.31x / 1.29x 1.7 ms 4.76x / 4.69x
[i64_opt] 32768 385.6 us 0.58x / 0.58x 1.5 ms 2.26x / 2.25x
[str(16)] 32768 566.9 us 0.86x / 0.85x 2.0 ms 2.98x / 2.97x
[str_list(4), i32] 32768 8.7 ms 1.53x / 1.93x 7.1 ms 1.25x / 1.39x
[str_list_opt(4), i32] 32768 9.6 ms 1.92x / 2.17x 6.6 ms 1.32x / 1.38x
[str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)] 32768 5.3 ms 2.78x / 2.77x 3.4 ms 1.78x / 1.78x
[str_opt(16), str(16)] 32768 5.3 ms 4.74x / 4.75x 2.3 ms 2.06x / 2.06x
[str_opt(16), str_opt(50), str(16)] 32768 5.6 ms 3.74x / 3.68x 3.0 ms 2.00x / 2.01x
[str_opt(16)] 32768 471.1 us 0.51x / 0.50x 1.8 ms 1.97x / 1.98x
[i32(0..10), i32(0..10), i32(0..10)] 1048576 180.9 ms 4.39x / 4.26x 87.2 ms 2.12x / 1.98x
[i32(1..204K), i64(0..n/10)] 1048576 218.6 ms 5.33x / 5.01x 121.0 ms 2.95x / 2.99x

Cases with a limit, on Xeon Platinum 8581C:

Case Rows Limit lexsort_to_indices Speedup (default / aligned)
[i32(1..204K), i64(0..n/10)] 32768 100 102.8 us 0.33x / 0.31x
[i32(1..204K), i64(0..n/10)] 32768 1000 467.6 us 1.47x / 1.37x
[i32(1..204K), i64(0..n/10)] 32768 3276 1.2 ms 3.35x / 3.10x
[i64(0..1000), i32] 32768 100 102.2 us 0.30x / 0.28x
[i64(0..1000), i32] 32768 1000 593.6 us 1.68x / 1.59x
[i64(0..1000), i32] 32768 3276 1.5 ms 3.77x / 3.69x
[str_opt(16), str(16)] 32768 100 282.1 us 0.36x / 0.36x
[str_opt(16), str(16)] 32768 1000 1.0 ms 1.37x / 1.33x
[str_opt(16), str(16)] 32768 3276 2.5 ms 3.15x / 3.12x
[i32(1..204K), i64(0..n/10)] 1048576 100 2.3 ms 0.10x / 0.10x
[i32(1..204K), i64(0..n/10)] 1048576 1000 3.2 ms 0.14x / 0.14x
[i32(1..204K), i64(0..n/10)] 1048576 104857 72.6 ms 2.99x / 2.89x
[i64(0..1000), i32] 1048576 100 2.3 ms 0.10x / 0.10x
[i64(0..1000), i32] 1048576 1000 3.4 ms 0.14x / 0.13x
[i64(0..1000), i32] 1048576 104857 87.8 ms 3.43x / 3.17x
[str_opt(16), str(16)] 1048576 100 6.8 ms 0.15x / 0.13x
[str_opt(16), str(16)] 1048576 1000 8.4 ms 0.18x / 0.16x
[str_opt(16), str(16)] 1048576 104857 167.4 ms 3.44x / 3.45x

Cases with a limit, on Neoverse-V2:

Case Rows Limit lexsort_to_indices Speedup (default / aligned)
[i32(1..204K), i64(0..n/10)] 32768 100 85.9 us 0.36x / 0.35x
[i32(1..204K), i64(0..n/10)] 32768 1000 353.2 us 1.42x / 1.37x
[i32(1..204K), i64(0..n/10)] 32768 3276 950.5 us 3.41x / 3.36x
[i64(0..1000), i32] 32768 100 88.7 us 0.30x / 0.31x
[i64(0..1000), i32] 32768 1000 445.4 us 1.47x / 1.48x
[i64(0..1000), i32] 32768 3276 1.2 ms 3.78x / 3.82x
[str_opt(16), str(16)] 32768 100 208.0 us 0.31x / 0.32x
[str_opt(16), str(16)] 32768 1000 872.0 us 1.29x / 1.28x
[str_opt(16), str(16)] 32768 3276 2.2 ms 3.11x / 3.11x
[i32(1..204K), i64(0..n/10)] 1048576 100 2.2 ms 0.09x / 0.10x
[i32(1..204K), i64(0..n/10)] 1048576 1000 2.8 ms 0.12x / 0.13x
[i32(1..204K), i64(0..n/10)] 1048576 104857 83.7 ms 3.30x / 3.53x
[i64(0..1000), i32] 1048576 100 2.2 ms 0.09x / 0.09x
[i64(0..1000), i32] 1048576 1000 3.0 ms 0.12x / 0.13x
[i64(0..1000), i32] 1048576 104857 98.4 ms 3.80x / 3.86x
[str_opt(16), str(16)] 1048576 100 6.3 ms 0.13x / 0.13x
[str_opt(16), str(16)] 1048576 1000 8.0 ms 0.17x / 0.16x
[str_opt(16), str(16)] 1048576 104857 225.4 ms 4.60x / 4.30x

Are these changes tested?

Unit tests are in arrow-row/src/radix.rs, including a fuzz test over random column types and sort options that checks the output is a sorted permutation of the rows, and tests for rows whose keys tie.

Are there any user-facing changes?

Yes. The arrow_row::radix module and radix_sort_to_indices are new public API.

AI Disclosure

I wrote this PR with help from Claude but understand and support the core approach, implementation, and test coverage.

@github-actions github-actions Bot added the arrow Changes to the arrow crate label Apr 9, 2026
@mbutrovich

This comment was marked as outdated.

@mbutrovich mbutrovich changed the title Radix row sort feat(arrow-row): add MSD radix sort kernel for row-encoded keys Apr 9, 2026
Comment thread arrow-row/src/radix.rs Resolved
Comment thread arrow-row/src/radix.rs Resolved
Comment thread arrow-row/src/radix.rs Resolved
Comment thread arrow-row/src/radix.rs Resolved
@mbutrovich

This comment was marked as outdated.

@mbutrovich

mbutrovich commented Apr 10, 2026 •

Copy link
Copy Markdown
Contributor Author

I updated numbers in the PR description and full table in the comment after it to reflect current PR status.

My attempt to bring it to DataFusion has so far been disappointing: apache/datafusion#21525

I think we need a deeper redesign of that stream rather than just replacing the existing logic. apache/datafusion#21525 (comment)

@mbutrovich

Copy link
Copy Markdown
Contributor Author

@Dandandan I also made a couple of API additions to Row. Let me know if that's what you had in mind.

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: lexsort

Sharding factor: 1 (1 workers).

Comparing radix_row_sort (d3824b8) to cd91f89 (merge-base) diff

Run configuration
run benchmark lexsort
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@mbutrovich

Copy link
Copy Markdown
Contributor Author

run benchmark lexsort

env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: lexsort

Sharding factor: 1 (1 workers).

Comparing radix_row_sort (d3824b8) to cd91f89 (merge-base) diff

Run configuration
run benchmark lexsort
env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@mbutrovich

Copy link
Copy Markdown
Contributor Author

run benchmark lexsort

resources:
  arch: amd64

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: lexsort

Sharding factor: 1 (1 workers).

Comparing radix_row_sort (d3824b8) to cd91f89 (merge-base) diff

Run configuration
run benchmark lexsort
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@mbutrovich

Copy link
Copy Markdown
Contributor Author

run benchmark lexsort

env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
  arch: amd64

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: lexsort

Sharding factor: 1 (1 workers).

Comparing radix_row_sort (d3824b8) to cd91f89 (merge-base) diff

Run configuration
run benchmark lexsort
env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: lexsort

Comparing radix_row_sort (d3824b8) to cd91f89 (merge-base) diff

Run configuration
run benchmark lexsort
resources:
  arch: amd64
shards: 1
Details
group                                                                                                            base                                   changed
-----                                                                                                            ----                                   -------
encode([decimal128(18,2), i32]): 32768                                                                                                                  1.00    223.7±2.36µs        ? ?/sec
encode([decimal128(18,2), i32]): 4096                                                                                                                   1.00     27.7±0.08µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                           1.00   1535.2±3.90µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                            1.00     98.1±1.17µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                       1.00   1816.5±3.55µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                        1.00    121.5±2.17µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                           1.00    648.3±1.03µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                            1.00     55.6±0.19µs        ? ?/sec
encode([f64]): 32768                                                                                                                                    1.00     49.5±0.50µs        ? ?/sec
encode([f64]): 4096                                                                                                                                     1.00      6.3±0.02µs        ? ?/sec
encode([f64_opt]): 32768                                                                                                                                1.00     96.3±1.35µs        ? ?/sec
encode([f64_opt]): 4096                                                                                                                                 1.00      7.4±0.03µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                                   1.00      3.8±0.01ms        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                                     1.00     83.7±1.17µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                      1.00     10.6±0.07µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                           1.00      2.9±0.03ms        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 32768                                                                                                             1.00     63.1±0.46µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 4096                                                                                                              1.00      8.0±0.06µs        ? ?/sec
encode([i32, i32_list, str(16)]): 32768                                                                                                                 1.00   1033.5±4.49µs        ? ?/sec
encode([i32, i32_list, str(16)]): 4096                                                                                                                  1.00    102.8±0.81µs        ? ?/sec
encode([i32, i32_opt]): 32768                                                                                                                           1.00    105.4±1.00µs        ? ?/sec
encode([i32, i32_opt]): 4096                                                                                                                            1.00      8.7±0.12µs        ? ?/sec
encode([i32, str(16)]): 32768                                                                                                                           1.00    160.1±1.06µs        ? ?/sec
encode([i32, str(16)]): 4096                                                                                                                            1.00     19.6±0.07µs        ? ?/sec
encode([i32, str_list(4)]): 32768                                                                                                                       1.00      4.2±0.07ms        ? ?/sec
encode([i32, str_list(4)]): 4096                                                                                                                        1.00    483.7±2.45µs        ? ?/sec
encode([i32, str_list_opt(4)]): 32768                                                                                                                   1.00      4.1±0.03ms        ? ?/sec
encode([i32, str_list_opt(4)]): 4096                                                                                                                    1.00    467.9±2.64µs        ? ?/sec
encode([i32, str_opt(16)]): 32768                                                                                                                       1.00    302.1±2.34µs        ? ?/sec
encode([i32, str_opt(16)]): 4096                                                                                                                        1.00     29.3±0.30µs        ? ?/sec
encode([i32]): 32768                                                                                                                                    1.00     34.8±0.22µs        ? ?/sec
encode([i32]): 4096                                                                                                                                     1.00      4.5±0.03µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 32768                                                                                                                  1.00   1085.6±6.96µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 4096                                                                                                                   1.00    100.0±0.80µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                         1.00    357.6±7.83µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                          1.00     32.6±0.29µs        ? ?/sec
encode([i32_opt, i32_list]): 32768                                                                                                                      1.00    920.6±5.57µs        ? ?/sec
encode([i32_opt, i32_list]): 4096                                                                                                                       1.00     87.3±0.46µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                                     1.00   1493.3±7.49µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                                      1.00    142.7±1.63µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 32768                                                                                                                  1.00   1085.9±8.45µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 4096                                                                                                                   1.00    100.4±0.58µs        ? ?/sec
encode([i32_opt]): 32768                                                                                                                                1.00     82.3±0.65µs        ? ?/sec
encode([i32_opt]): 4096                                                                                                                                 1.00      5.7±0.03µs        ? ?/sec
encode([i64(0..1000), i32]): 32768                                                                                                                      1.00     66.2±1.13µs        ? ?/sec
encode([i64(0..1000), i32]): 4096                                                                                                                       1.00      8.2±0.13µs        ? ?/sec
encode([i64]): 32768                                                                                                                                    1.00     38.8±0.17µs        ? ?/sec
encode([i64]): 4096                                                                                                                                     1.00      4.9±0.02µs        ? ?/sec
encode([i64_opt]): 32768                                                                                                                                1.00     89.3±0.51µs        ? ?/sec
encode([i64_opt]): 4096                                                                                                                                 1.00      8.2±0.03µs        ? ?/sec
encode([str(16)]): 32768                                                                                                                                1.00    135.2±0.51µs        ? ?/sec
encode([str(16)]): 4096                                                                                                                                 1.00     16.6±0.21µs        ? ?/sec
encode([str_list(4), i32]): 32768                                                                                                                       1.00      4.3±0.01ms        ? ?/sec
encode([str_list(4), i32]): 4096                                                                                                                        1.00    503.1±7.48µs        ? ?/sec
encode([str_list_opt(4), i32]): 32768                                                                                                                   1.00      4.1±0.02ms        ? ?/sec
encode([str_list_opt(4), i32]): 4096                                                                                                                    1.00    469.6±1.58µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                            1.00   1250.9±2.86µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                             1.00    112.9±1.02µs        ? ?/sec
encode([str_opt(16), str(16)]): 32768                                                                                                                   1.00    408.2±1.47µs        ? ?/sec
encode([str_opt(16), str(16)]): 4096                                                                                                                    1.00     41.1±0.56µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 32768                                                                                                      1.00    834.1±4.03µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                       1.00     79.9±0.96µs        ? ?/sec
encode([str_opt(16)]): 32768                                                                                                                            1.00    275.8±1.32µs        ? ?/sec
encode([str_opt(16)]): 4096                                                                                                                             1.00     26.4±0.50µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 32768                                                                                                           1.00    736.7±4.69µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 4096                                                                                                            1.00     80.8±0.36µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                    1.00      3.5±0.01ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                     1.00    250.5±3.09µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                1.00      3.8±0.02ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                 1.00    284.4±4.30µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                    1.00   1874.8±3.74µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                     1.00    159.8±0.92µs        ? ?/sec
lexsort_radix([f64]): 32768                                                                                                                             1.00    629.3±3.65µs        ? ?/sec
lexsort_radix([f64]): 4096                                                                                                                              1.00     42.3±0.31µs        ? ?/sec
lexsort_radix([f64_opt]): 32768                                                                                                                         1.00    690.8±2.61µs        ? ?/sec
lexsort_radix([f64_opt]): 4096                                                                                                                          1.00     67.3±0.50µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                            1.00     33.2±0.48ms        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                              1.00    587.4±3.77µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                               1.00     89.9±0.67µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                    1.00     34.0±0.45ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768                                                                                                      1.00    798.7±3.58µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 4096                                                                                                       1.00     41.7±0.21µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 32768                                                                                                          1.00   1427.3±6.61µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 4096                                                                                                           1.00    145.9±2.11µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 32768                                                                                                                    1.00    446.7±4.45µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 4096                                                                                                                     1.00     42.2±0.61µs        ? ?/sec
lexsort_radix([i32, str(16)]): 32768                                                                                                                    1.00    530.2±2.37µs        ? ?/sec
lexsort_radix([i32, str(16)]): 4096                                                                                                                     1.00     54.0±1.83µs        ? ?/sec
lexsort_radix([i32, str_list(4)]): 32768                                                                                                                1.00      4.8±0.07ms        ? ?/sec
lexsort_radix([i32, str_list(4)]): 4096                                                                                                                 1.00    556.2±6.32µs        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 32768                                                                                                            1.00      4.7±0.04ms        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 4096                                                                                                             1.00    541.3±2.76µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 32768                                                                                                                1.00    684.5±4.46µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 4096                                                                                                                 1.00     63.6±0.52µs        ? ?/sec
lexsort_radix([i32]): 32768                                                                                                                             1.00    355.6±4.41µs        ? ?/sec
lexsort_radix([i32]): 4096                                                                                                                              1.00     34.0±0.60µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 32768                                                                                                           1.00  1798.3±10.06µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 4096                                                                                                            1.00    193.0±1.89µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                  1.00   1164.8±4.82µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                   1.00     91.9±0.95µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 32768                                                                                                               1.00  1621.0±12.27µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 4096                                                                                                                1.00    151.7±0.64µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                              1.00      2.3±0.03ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                               1.00    220.7±2.15µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 32768                                                                                                           1.00   1799.0±6.64µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 4096                                                                                                            1.00    177.0±0.97µs        ? ?/sec
lexsort_radix([i32_opt]): 32768                                                                                                                         1.00    702.9±6.24µs        ? ?/sec
lexsort_radix([i32_opt]): 4096                                                                                                                          1.00     51.8±1.21µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768                                                                                                               1.00    827.1±2.80µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 4096                                                                                                                1.00     46.4±0.28µs        ? ?/sec
lexsort_radix([i64]): 32768                                                                                                                             1.00    370.7±3.50µs        ? ?/sec
lexsort_radix([i64]): 4096                                                                                                                              1.00     34.9±0.17µs        ? ?/sec
lexsort_radix([i64_opt]): 32768                                                                                                                         1.00    714.0±2.25µs        ? ?/sec
lexsort_radix([i64_opt]): 4096                                                                                                                          1.00     49.7±0.45µs        ? ?/sec
lexsort_radix([str(16)]): 32768                                                                                                                         1.00    607.7±6.49µs        ? ?/sec
lexsort_radix([str(16)]): 4096                                                                                                                          1.00     62.1±0.63µs        ? ?/sec
lexsort_radix([str_list(4), i32]): 32768                                                                                                                1.00      5.1±0.02ms        ? ?/sec
lexsort_radix([str_list(4), i32]): 4096                                                                                                                 1.00    592.4±3.63µs        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 32768                                                                                                            1.00      5.0±0.02ms        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 4096                                                                                                             1.00    568.9±3.40µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                     1.00   1937.9±5.48µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                      1.00    186.2±3.29µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768                                                                                                            1.00   1046.7±3.17µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 4096                                                                                                             1.00    106.8±0.41µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 32768                                                                                               1.00  1536.2±10.02µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                1.00    149.4±1.05µs        ? ?/sec
lexsort_radix([str_opt(16)]): 32768                                                                                                                     1.00    885.4±8.67µs        ? ?/sec
lexsort_radix([str_opt(16)]): 4096                                                                                                                      1.00     96.3±1.51µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 32768                                                                                                            1.00   1929.5±7.60µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 4096                                                                                                             1.00    178.2±1.81µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768              1.02      5.4±0.03ms        ? ?/sec    1.00      5.4±0.03ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096               1.00    397.4±9.06µs        ? ?/sec    1.02    403.6±5.11µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768          1.00      6.0±0.06ms        ? ?/sec    1.00      6.0±0.05ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096           1.00    465.5±1.66µs        ? ?/sec    1.00    467.6±5.82µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                              1.02      2.4±0.01ms        ? ?/sec    1.00      2.3±0.01ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                               1.00    201.0±0.75µs        ? ?/sec    1.02    204.7±2.38µs        ? ?/sec
lexsort_rows([f64]): 32768                                                                                                                              1.00   1722.8±8.81µs        ? ?/sec
lexsort_rows([f64]): 4096                                                                                                                               1.00    151.2±1.56µs        ? ?/sec
lexsort_rows([f64_opt]): 32768                                                                                                                          1.00  1599.3±14.24µs        ? ?/sec
lexsort_rows([f64_opt]): 4096                                                                                                                           1.00    135.2±0.87µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                             1.00     73.1±0.30ms        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                               1.00   1552.4±4.98µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                1.00    178.9±4.45µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                     1.00     97.8±1.03ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 32768                                                                                                       1.00  1746.2±16.16µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 4096                                                                                                        1.00    154.6±1.73µs        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 32768                                                                    1.00      3.4±0.01ms        ? ?/sec    1.01      3.4±0.05ms        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 4096                                                                     1.00    329.6±3.70µs        ? ?/sec    1.01    333.2±1.91µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 32768                                                                              1.00  1808.2±14.10µs        ? ?/sec    1.00  1801.5±12.84µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 4096                                                                               1.03    158.7±3.16µs        ? ?/sec    1.00    154.2±1.80µs        ? ?/sec
lexsort_rows([i32, str(16)]): 32768                                                                              1.00   1877.3±9.63µs        ? ?/sec    1.01  1896.7±95.59µs        ? ?/sec
lexsort_rows([i32, str(16)]): 4096                                                                               1.02    165.8±1.83µs        ? ?/sec    1.00    163.3±2.90µs        ? ?/sec
lexsort_rows([i32, str_list(4)]): 32768                                                                          1.02      6.9±0.02ms        ? ?/sec    1.00      6.8±0.04ms        ? ?/sec
lexsort_rows([i32, str_list(4)]): 4096                                                                           1.01    749.8±2.11µs        ? ?/sec    1.00    741.8±2.72µs        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 32768                                                                      1.00      6.9±0.04ms        ? ?/sec    1.00      6.9±0.02ms        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 4096                                                                       1.00   745.8±23.00µs        ? ?/sec    1.00    745.4±5.94µs        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 32768                                                                          1.01      2.1±0.03ms        ? ?/sec    1.00      2.0±0.01ms        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 4096                                                                           1.00    186.5±3.38µs        ? ?/sec    1.01    187.5±1.78µs        ? ?/sec
lexsort_rows([i32]): 32768                                                                                                                              1.00  1694.1±17.57µs        ? ?/sec
lexsort_rows([i32]): 4096                                                                                                                               1.00    150.9±2.28µs        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 32768                                                                     1.00      3.4±0.02ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 4096                                                                      1.00    351.8±2.44µs        ? ?/sec    1.01    353.6±5.58µs        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 32768                                                            1.02      2.4±0.02ms        ? ?/sec    1.00      2.4±0.02ms        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 4096                                                             1.00    217.1±1.09µs        ? ?/sec    1.01    219.3±2.27µs        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 32768                                                                         1.00      3.2±0.04ms        ? ?/sec    1.01      3.2±0.02ms        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 4096                                                                          1.00    326.7±2.23µs        ? ?/sec    1.00    326.1±1.24µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                        1.00      3.7±0.03ms        ? ?/sec    1.01      3.7±0.05ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                         1.00    360.5±1.78µs        ? ?/sec    1.01   363.8±21.70µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 32768                                                                     1.00      3.4±0.02ms        ? ?/sec    1.00      3.3±0.05ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 4096                                                                      1.00    344.9±6.32µs        ? ?/sec    1.01    346.9±3.66µs        ? ?/sec
lexsort_rows([i32_opt]): 32768                                                                                                                          1.00   1532.2±6.88µs        ? ?/sec
lexsort_rows([i32_opt]): 4096                                                                                                                           1.00    130.1±1.62µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 32768                                                                                                                1.00  1749.2±12.95µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 4096                                                                                                                 1.00    155.4±2.01µs        ? ?/sec
lexsort_rows([i64]): 32768                                                                                                                              1.00  1710.5±14.80µs        ? ?/sec
lexsort_rows([i64]): 4096                                                                                                                               1.00    150.8±0.78µs        ? ?/sec
lexsort_rows([i64_opt]): 32768                                                                                                                          1.00   1575.6±6.55µs        ? ?/sec
lexsort_rows([i64_opt]): 4096                                                                                                                           1.00    133.4±0.92µs        ? ?/sec
lexsort_rows([str(16)]): 32768                                                                                                                          1.00  1863.1±13.86µs        ? ?/sec
lexsort_rows([str(16)]): 4096                                                                                                                           1.00    162.7±1.36µs        ? ?/sec
lexsort_rows([str_list(4), i32]): 32768                                                                          1.00      6.4±0.02ms        ? ?/sec    1.00      6.4±0.02ms        ? ?/sec
lexsort_rows([str_list(4), i32]): 4096                                                                           1.00    700.7±4.86µs        ? ?/sec    1.00   698.1±10.54µs        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 32768                                                                      1.02      6.3±0.02ms        ? ?/sec    1.00      6.2±0.02ms        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 4096                                                                       1.00    669.8±1.97µs        ? ?/sec    1.00    666.9±3.77µs        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                               1.00      3.2±0.00ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                1.02    290.5±1.20µs        ? ?/sec    1.00    285.3±8.14µs        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 32768                                                                      1.00      2.1±0.02ms        ? ?/sec    1.00      2.1±0.00ms        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 4096                                                                       1.01    201.9±1.15µs        ? ?/sec    1.00    200.2±2.48µs        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 32768                                                         1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.03ms        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 4096                                                          1.00    239.0±2.02µs        ? ?/sec    1.00    239.9±1.85µs        ? ?/sec
lexsort_rows([str_opt(16)]): 32768                                                                                                                      1.00  1828.3±16.50µs        ? ?/sec
lexsort_rows([str_opt(16)]): 4096                                                                                                                       1.00    163.5±0.72µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 32768                                                                                                      1.00   1338.7±7.84µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 4096                                                                                                       1.00    126.1±0.53µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768        1.00      7.5±0.02ms        ? ?/sec    1.00      7.5±0.03ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096         1.00    640.2±4.63µs        ? ?/sec    1.00    642.5±3.35µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768    1.01      7.5±0.04ms        ? ?/sec    1.00      7.4±0.06ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096     1.00    695.4±5.75µs        ? ?/sec    1.02    707.7±5.15µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                        1.00      2.4±0.01ms        ? ?/sec    1.01      2.4±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                         1.00    288.9±1.06µs        ? ?/sec    1.05    303.1±1.61µs        ? ?/sec
lexsort_to_indices([f64]): 32768                                                                                                                        1.00    628.7±4.49µs        ? ?/sec
lexsort_to_indices([f64]): 4096                                                                                                                         1.00     49.8±0.87µs        ? ?/sec
lexsort_to_indices([f64_opt]): 32768                                                                                                                    1.00    521.4±4.35µs        ? ?/sec
lexsort_to_indices([f64_opt]): 4096                                                                                                                     1.00     41.3±0.12µs        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                       1.00    122.7±0.64ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                         1.00      2.9±0.02ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                          1.00    313.0±4.47µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576                                                                                               1.00     93.9±0.47ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768                                                                                                 1.00  1251.7±12.50µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 4096                                                                                                  1.00    113.9±0.51µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 32768                                                              1.00  1205.3±10.02µs        ? ?/sec    1.01  1218.8±17.74µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 4096                                                               1.00    117.9±0.96µs        ? ?/sec    1.00    118.4±0.99µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 32768                                                                        1.00  1202.4±10.90µs        ? ?/sec    1.00  1199.4±15.35µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 4096                                                                         1.00    113.5±1.20µs        ? ?/sec    1.00    113.2±0.51µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 32768                                                                        1.00   1206.6±7.19µs        ? ?/sec    1.01  1217.3±89.45µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 4096                                                                         1.01    114.1±0.91µs        ? ?/sec    1.00    113.4±0.82µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 32768                                                                    1.00   1201.0±2.54µs        ? ?/sec    1.00   1195.3±6.80µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 4096                                                                     1.02    115.2±0.97µs        ? ?/sec    1.00    113.2±0.50µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 32768                                                                1.00  1202.0±12.07µs        ? ?/sec    1.00   1201.2±8.86µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 4096                                                                 1.01    114.5±0.86µs        ? ?/sec    1.00    113.0±0.47µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 32768                                                                    1.01   1206.6±8.67µs        ? ?/sec    1.00  1196.3±15.98µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 4096                                                                     1.00    114.1±1.14µs        ? ?/sec    1.00    113.9±0.95µs        ? ?/sec
lexsort_to_indices([i32]): 32768                                                                                                                        1.00    409.0±4.34µs        ? ?/sec
lexsort_to_indices([i32]): 4096                                                                                                                         1.00     33.8±0.23µs        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 32768                                                               1.00      3.8±0.02ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 4096                                                                1.00    366.2±1.29µs        ? ?/sec    1.00    367.6±3.51µs        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 32768                                                      1.00      2.1±0.01ms        ? ?/sec    1.01      2.1±0.01ms        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 4096                                                       1.00    205.3±6.03µs        ? ?/sec    1.06    217.2±3.19µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 32768                                                                   1.00      2.1±0.01ms        ? ?/sec    1.01      2.1±0.01ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 4096                                                                    1.00    191.7±0.63µs        ? ?/sec    1.01    194.3±1.95µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                  1.00      2.5±0.01ms        ? ?/sec    1.01      2.5±0.01ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                   1.00    224.9±0.84µs        ? ?/sec    1.00    225.3±2.71µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 32768                                                               1.00      2.3±0.00ms        ? ?/sec    1.01      2.3±0.02ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 4096                                                                1.00    208.0±1.74µs        ? ?/sec    1.00    208.3±2.68µs        ? ?/sec
lexsort_to_indices([i32_opt]): 32768                                                                                                                    1.00    339.0±1.75µs        ? ?/sec
lexsort_to_indices([i32_opt]): 4096                                                                                                                     1.00     29.0±0.33µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768                                                                                                          1.00      2.0±0.01ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 4096                                                                                                           1.00    143.5±3.43µs        ? ?/sec
lexsort_to_indices([i64]): 32768                                                                                                                        1.00    541.6±3.91µs        ? ?/sec
lexsort_to_indices([i64]): 4096                                                                                                                         1.00     38.6±0.29µs        ? ?/sec
lexsort_to_indices([i64_opt]): 32768                                                                                                                    1.00    446.0±2.97µs        ? ?/sec
lexsort_to_indices([i64_opt]): 4096                                                                                                                     1.00     33.3±0.28µs        ? ?/sec
lexsort_to_indices([str(16)]): 32768                                                                                                                    1.00    530.3±2.78µs        ? ?/sec
lexsort_to_indices([str(16)]): 4096                                                                                                                     1.00     44.3±0.31µs        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 32768                                                                    1.00      5.2±0.03ms        ? ?/sec    1.00      5.2±0.04ms        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 4096                                                                     1.00    396.7±2.49µs        ? ?/sec    1.01    402.1±3.08µs        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 32768                                                                1.01      6.1±0.04ms        ? ?/sec    1.00      6.0±0.04ms        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 4096                                                                 1.01    496.6±4.41µs        ? ?/sec    1.00    493.5±1.75µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                         1.01      3.3±0.01ms        ? ?/sec    1.00      3.3±0.08ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                          1.02    310.4±2.67µs        ? ?/sec    1.00    304.3±2.10µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768                                                                1.00      3.2±0.02ms        ? ?/sec    1.00      3.2±0.02ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 4096                                                                 1.00    298.3±1.54µs        ? ?/sec    1.00    298.4±1.72µs        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 32768                                                   1.01      3.5±0.02ms        ? ?/sec    1.00      3.4±0.02ms        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 4096                                                    1.01    317.6±2.66µs        ? ?/sec    1.00    314.4±1.60µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 32768                                                                                                                1.00    439.7±5.08µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 4096                                                                                                                 1.00     37.3±0.31µs        ? ?/sec

Per-runner information
lexsort — shard 1/1

Node: gk3-benchmark-cluster-nap-1ev1lxub-b60917df-zn9x

Instance: c4-highmem-16 (12 vCPU / 65 GiB)

uname:

Linux bench-c6836378085-4849-pfxxx 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench lexsort
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 770.2s
Peak memory 60.0 MiB
Avg memory 20.3 MiB
CPU user 765.7s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 2680.6s
Peak memory 81.4 MiB
Avg memory 20.0 MiB
CPU user 2667.2s
CPU sys 9.8s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: lexsort

Comparing radix_row_sort (d3824b8) to cd91f89 (merge-base) diff

Run configuration
run benchmark lexsort
shards: 1
Details
group                                                                                                            base                                   changed
-----                                                                                                            ----                                   -------
encode([decimal128(18,2), i32]): 32768                                                                                                                  1.00    225.2±0.31µs        ? ?/sec
encode([decimal128(18,2), i32]): 4096                                                                                                                   1.00     28.5±0.29µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                           1.00  1408.5±46.35µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                            1.00    120.1±1.70µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                       1.00  1781.5±74.08µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                        1.00    128.6±0.56µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                           1.00    599.3±5.19µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                            1.00     64.1±0.25µs        ? ?/sec
encode([f64]): 32768                                                                                                                                    1.00     38.1±0.04µs        ? ?/sec
encode([f64]): 4096                                                                                                                                     1.00      5.1±0.01µs        ? ?/sec
encode([f64_opt]): 32768                                                                                                                                1.00     69.3±0.33µs        ? ?/sec
encode([f64_opt]): 4096                                                                                                                                 1.00      6.2±0.01µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                                   1.00      5.6±0.22ms        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                                     1.00     99.9±1.25µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                      1.00     13.8±1.05µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                           1.00      4.0±0.07ms        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 32768                                                                                                             1.00     65.6±0.12µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 4096                                                                                                              1.00      9.3±0.83µs        ? ?/sec
encode([i32, i32_list, str(16)]): 32768                                                                                                                 1.00  1087.5±10.60µs        ? ?/sec
encode([i32, i32_list, str(16)]): 4096                                                                                                                  1.00    116.2±1.70µs        ? ?/sec
encode([i32, i32_opt]): 32768                                                                                                                           1.00     94.9±2.29µs        ? ?/sec
encode([i32, i32_opt]): 4096                                                                                                                            1.00      9.3±0.04µs        ? ?/sec
encode([i32, str(16)]): 32768                                                                                                                           1.00   225.1±14.02µs        ? ?/sec
encode([i32, str(16)]): 4096                                                                                                                            1.00     28.8±2.00µs        ? ?/sec
encode([i32, str_list(4)]): 32768                                                                                                                       1.00      5.3±0.11ms        ? ?/sec
encode([i32, str_list(4)]): 4096                                                                                                                        1.00    346.7±3.27µs        ? ?/sec
encode([i32, str_list_opt(4)]): 32768                                                                                                                   1.00      4.3±0.10ms        ? ?/sec
encode([i32, str_list_opt(4)]): 4096                                                                                                                    1.00    337.1±1.62µs        ? ?/sec
encode([i32, str_opt(16)]): 32768                                                                                                                       1.00    298.7±1.81µs        ? ?/sec
encode([i32, str_opt(16)]): 4096                                                                                                                        1.00     28.4±0.54µs        ? ?/sec
encode([i32]): 32768                                                                                                                                    1.00     33.7±0.03µs        ? ?/sec
encode([i32]): 4096                                                                                                                                     1.00      4.5±0.01µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 32768                                                                                                                  1.00   1047.4±3.34µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 4096                                                                                                                   1.00     97.9±0.30µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                         1.00    342.2±2.39µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                          1.00     37.7±0.06µs        ? ?/sec
encode([i32_opt, i32_list]): 32768                                                                                                                      1.00    946.5±2.68µs        ? ?/sec
encode([i32_opt, i32_list]): 4096                                                                                                                       1.00     95.3±0.10µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                                     1.00   1391.5±3.82µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                                      1.00    135.8±0.45µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 32768                                                                                                                  1.00   1054.6±3.53µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 4096                                                                                                                   1.00     97.8±0.36µs        ? ?/sec
encode([i32_opt]): 32768                                                                                                                                1.00     66.1±0.25µs        ? ?/sec
encode([i32_opt]): 4096                                                                                                                                 1.00      5.9±0.05µs        ? ?/sec
encode([i64(0..1000), i32]): 32768                                                                                                                      1.00     65.5±0.11µs        ? ?/sec
encode([i64(0..1000), i32]): 4096                                                                                                                       1.00      9.9±0.33µs        ? ?/sec
encode([i64]): 32768                                                                                                                                    1.00     34.5±0.06µs        ? ?/sec
encode([i64]): 4096                                                                                                                                     1.00      4.6±0.00µs        ? ?/sec
encode([i64_opt]): 32768                                                                                                                                1.00     65.0±0.35µs        ? ?/sec
encode([i64_opt]): 4096                                                                                                                                 1.00      6.0±0.02µs        ? ?/sec
encode([str(16)]): 32768                                                                                                                                1.00   189.0±11.65µs        ? ?/sec
encode([str(16)]): 4096                                                                                                                                 1.00     23.8±1.44µs        ? ?/sec
encode([str_list(4), i32]): 32768                                                                                                                       1.00      5.3±0.14ms        ? ?/sec
encode([str_list(4), i32]): 4096                                                                                                                        1.00    345.1±1.73µs        ? ?/sec
encode([str_list_opt(4), i32]): 32768                                                                                                                   1.00      4.4±0.09ms        ? ?/sec
encode([str_list_opt(4), i32]): 4096                                                                                                                    1.00    335.7±1.51µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                            1.00  1197.5±11.75µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                             1.00    113.5±2.80µs        ? ?/sec
encode([str_opt(16), str(16)]): 32768                                                                                                                   1.00   448.6±13.82µs        ? ?/sec
encode([str_opt(16), str(16)]): 4096                                                                                                                    1.00     47.1±2.20µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 32768                                                                                                      1.00   798.6±10.14µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                       1.00     81.9±1.86µs        ? ?/sec
encode([str_opt(16)]): 32768                                                                                                                            1.00    267.7±1.28µs        ? ?/sec
encode([str_opt(16)]): 4096                                                                                                                             1.00     24.6±0.47µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 32768                                                                                                           1.00    706.0±3.45µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 4096                                                                                                            1.00     82.8±0.13µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                    1.00      5.5±0.22ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                     1.00    309.7±2.50µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                1.00      6.2±0.17ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                 1.00    319.8±4.34µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                    1.00      2.4±0.08ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                     1.00    196.9±1.11µs        ? ?/sec
lexsort_radix([f64]): 32768                                                                                                                             1.00    584.3±1.85µs        ? ?/sec
lexsort_radix([f64]): 4096                                                                                                                              1.00     42.4±0.58µs        ? ?/sec
lexsort_radix([f64_opt]): 32768                                                                                                                         1.00    671.9±2.67µs        ? ?/sec
lexsort_radix([f64_opt]): 4096                                                                                                                          1.00     72.6±0.19µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                            1.00     44.8±0.68ms        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                              1.00    656.5±1.25µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                               1.00    106.9±0.14µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                    1.00     45.8±0.54ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768                                                                                                      1.00    749.3±1.81µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 4096                                                                                                       1.00     42.6±0.32µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 32768                                                                                                          1.00  1467.0±10.87µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 4096                                                                                                           1.00    152.2±1.67µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 32768                                                                                                                    1.00    421.1±2.06µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 4096                                                                                                                     1.00     39.4±0.10µs        ? ?/sec
lexsort_radix([i32, str(16)]): 32768                                                                                                                    1.00   589.2±13.76µs        ? ?/sec
lexsort_radix([i32, str(16)]): 4096                                                                                                                     1.00     62.5±1.89µs        ? ?/sec
lexsort_radix([i32, str_list(4)]): 32768                                                                                                                1.00      6.2±0.10ms        ? ?/sec
lexsort_radix([i32, str_list(4)]): 4096                                                                                                                 1.00    418.2±2.77µs        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 32768                                                                                                            1.00      5.2±0.10ms        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 4096                                                                                                             1.00    406.2±1.54µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 32768                                                                                                                1.00    678.4±2.35µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 4096                                                                                                                 1.00     63.1±0.55µs        ? ?/sec
lexsort_radix([i32]): 32768                                                                                                                             1.00    352.5±2.16µs        ? ?/sec
lexsort_radix([i32]): 4096                                                                                                                              1.00     34.4±0.06µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 32768                                                                                                           1.00   1811.9±4.78µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 4096                                                                                                            1.00    177.9±0.41µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                  1.00  1153.6±12.28µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                   1.00     98.9±0.43µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 32768                                                                                                               1.00   1633.3±3.26µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 4096                                                                                                                1.00    149.3±0.24µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                              1.00      2.2±0.01ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                               1.00    203.1±0.62µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 32768                                                                                                           1.00   1768.8±5.04µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 4096                                                                                                            1.00    159.3±0.36µs        ? ?/sec
lexsort_radix([i32_opt]): 32768                                                                                                                         1.00    672.8±2.03µs        ? ?/sec
lexsort_radix([i32_opt]): 4096                                                                                                                          1.00     52.9±0.11µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768                                                                                                               1.00    788.0±2.24µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 4096                                                                                                                1.00     48.9±1.21µs        ? ?/sec
lexsort_radix([i64]): 32768                                                                                                                             1.00    359.8±2.84µs        ? ?/sec
lexsort_radix([i64]): 4096                                                                                                                              1.00     34.8±0.06µs        ? ?/sec
lexsort_radix([i64_opt]): 32768                                                                                                                         1.00    671.1±1.85µs        ? ?/sec
lexsort_radix([i64_opt]): 4096                                                                                                                          1.00     51.7±0.10µs        ? ?/sec
lexsort_radix([str(16)]): 32768                                                                                                                         1.00   624.3±11.86µs        ? ?/sec
lexsort_radix([str(16)]): 4096                                                                                                                          1.00     71.7±1.51µs        ? ?/sec
lexsort_radix([str_list(4), i32]): 32768                                                                                                                1.00      6.2±0.11ms        ? ?/sec
lexsort_radix([str_list(4), i32]): 4096                                                                                                                 1.00    447.1±3.01µs        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 32768                                                                                                            1.00      5.5±0.10ms        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 4096                                                                                                             1.00    442.5±1.45µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                     1.00  1896.7±12.67µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                      1.00    183.7±3.02µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768                                                                                                            1.00  1086.3±13.52µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 4096                                                                                                             1.00    116.0±2.19µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 32768                                                                                               1.00  1493.0±14.50µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                1.00    156.6±1.96µs        ? ?/sec
lexsort_radix([str_opt(16)]): 32768                                                                                                                     1.00    893.4±3.61µs        ? ?/sec
lexsort_radix([str_opt(16)]): 4096                                                                                                                      1.00     96.0±0.63µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 32768                                                                                                            1.00   1989.3±8.83µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 4096                                                                                                             1.00    181.5±0.39µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768              1.00      7.3±0.12ms        ? ?/sec    1.15      8.4±0.20ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096               1.00    494.7±0.77µs        ? ?/sec    1.01    499.8±2.84µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768          1.00      8.1±0.14ms        ? ?/sec    1.13      9.1±0.15ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096           1.01    545.8±3.62µs        ? ?/sec    1.00    538.1±1.38µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                              1.00      2.6±0.02ms        ? ?/sec    1.07      2.8±0.03ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                               1.01    245.9±0.51µs        ? ?/sec    1.00    242.8±1.10µs        ? ?/sec
lexsort_rows([f64]): 32768                                                                                                                              1.00   1709.9±3.33µs        ? ?/sec
lexsort_rows([f64]): 4096                                                                                                                               1.00    160.9±0.39µs        ? ?/sec
lexsort_rows([f64_opt]): 32768                                                                                                                          1.00   1523.1±3.98µs        ? ?/sec
lexsort_rows([f64_opt]): 4096                                                                                                                           1.00    140.0±0.38µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                             1.00    105.5±2.90ms        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                               1.00   1305.0±5.62µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                1.00    159.9±0.52µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                     1.00    146.5±2.69ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 32768                                                                                                       1.00   1786.1±6.84µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 4096                                                                                                        1.00    160.4±0.35µs        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 32768                                                                    1.00      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 4096                                                                     1.00    285.2±0.68µs        ? ?/sec    1.01    289.1±1.83µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 32768                                                                              1.00   1728.7±9.98µs        ? ?/sec    1.04   1801.8±7.16µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 4096                                                                               1.00    158.5±1.13µs        ? ?/sec    1.04    164.9±0.49µs        ? ?/sec
lexsort_rows([i32, str(16)]): 32768                                                                              1.00   1896.5±5.10µs        ? ?/sec    1.02  1942.5±13.74µs        ? ?/sec
lexsort_rows([i32, str(16)]): 4096                                                                               1.00    174.9±0.70µs        ? ?/sec    1.00    175.6±1.94µs        ? ?/sec
lexsort_rows([i32, str_list(4)]): 32768                                                                          1.00      8.6±0.15ms        ? ?/sec    1.00      8.6±0.15ms        ? ?/sec
lexsort_rows([i32, str_list(4)]): 4096                                                                           1.02    606.0±5.14µs        ? ?/sec    1.00    595.2±4.02µs        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 32768                                                                      1.01      7.9±0.10ms        ? ?/sec    1.00      7.8±0.14ms        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 4096                                                                       1.03    596.5±3.37µs        ? ?/sec    1.00    581.5±2.34µs        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 32768                                                                          1.00      2.6±0.01ms        ? ?/sec    1.02      2.6±0.01ms        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 4096                                                                           1.00    231.8±1.19µs        ? ?/sec    1.07    248.0±0.73µs        ? ?/sec
lexsort_rows([i32]): 32768                                                                                                                              1.00   1660.6±3.46µs        ? ?/sec
lexsort_rows([i32]): 4096                                                                                                                               1.00    161.2±0.53µs        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 32768                                                                     1.00      2.9±0.01ms        ? ?/sec    1.02      3.0±0.01ms        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 4096                                                                      1.00    274.0±1.44µs        ? ?/sec    1.01    277.9±0.77µs        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 32768                                                            1.00      2.6±0.01ms        ? ?/sec    1.05      2.7±0.02ms        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 4096                                                             1.00    222.7±1.62µs        ? ?/sec    1.04    230.8±0.82µs        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 32768                                                                         1.00      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 4096                                                                          1.00    307.3±1.83µs        ? ?/sec    1.02    312.8±0.72µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                        1.01      3.8±0.02ms        ? ?/sec    1.00      3.8±0.01ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                         1.00    325.7±1.71µs        ? ?/sec    1.01    328.3±0.56µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 32768                                                                     1.00      3.2±0.02ms        ? ?/sec    1.01      3.3±0.01ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 4096                                                                      1.00    320.2±1.79µs        ? ?/sec    1.00    318.7±0.66µs        ? ?/sec
lexsort_rows([i32_opt]): 32768                                                                                                                          1.00   1469.3±4.15µs        ? ?/sec
lexsort_rows([i32_opt]): 4096                                                                                                                           1.00    136.9±0.26µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 32768                                                                                                                1.00   1733.8±9.08µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 4096                                                                                                                 1.00    160.1±0.29µs        ? ?/sec
lexsort_rows([i64]): 32768                                                                                                                              1.00   1699.6±3.49µs        ? ?/sec
lexsort_rows([i64]): 4096                                                                                                                               1.00    154.7±0.32µs        ? ?/sec
lexsort_rows([i64_opt]): 32768                                                                                                                          1.00   1517.9±4.24µs        ? ?/sec
lexsort_rows([i64_opt]): 4096                                                                                                                           1.00    139.3±0.31µs        ? ?/sec
lexsort_rows([str(16)]): 32768                                                                                                                          1.00  1990.2±13.68µs        ? ?/sec
lexsort_rows([str(16)]): 4096                                                                                                                           1.00    182.9±1.51µs        ? ?/sec
lexsort_rows([str_list(4), i32]): 32768                                                                          1.03      8.4±0.15ms        ? ?/sec    1.00      8.1±0.13ms        ? ?/sec
lexsort_rows([str_list(4), i32]): 4096                                                                           1.03    571.9±6.87µs        ? ?/sec    1.00    557.2±4.64µs        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 32768                                                                      1.01      7.2±0.12ms        ? ?/sec    1.00      7.1±0.15ms        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 4096                                                                       1.01    549.4±2.67µs        ? ?/sec    1.00    542.1±2.25µs        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                               1.00      3.4±0.02ms        ? ?/sec    1.06      3.5±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                1.00    276.0±1.66µs        ? ?/sec    1.05    290.8±3.11µs        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 32768                                                                      1.00      2.3±0.01ms        ? ?/sec    1.03      2.3±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 4096                                                                       1.00    207.5±1.21µs        ? ?/sec    1.02    210.7±2.09µs        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 32768                                                         1.00      3.0±0.01ms        ? ?/sec    1.06      3.2±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 4096                                                          1.00    256.5±1.23µs        ? ?/sec    1.03    265.0±2.15µs        ? ?/sec
lexsort_rows([str_opt(16)]): 32768                                                                                                                      1.00   1870.3±7.78µs        ? ?/sec
lexsort_rows([str_opt(16)]): 4096                                                                                                                       1.00    168.6±0.43µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 32768                                                                                                      1.00      3.1±0.01ms        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 4096                                                                                                       1.00    263.4±0.98µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768        1.00     12.7±0.03ms        ? ?/sec    1.01     12.9±0.05ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096         1.01   1020.0±1.53µs        ? ?/sec    1.00   1012.7±3.19µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768    1.00     12.9±0.05ms        ? ?/sec    1.01     13.0±0.12ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096     1.00   1045.7±3.85µs        ? ?/sec    1.00   1046.6±3.03µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                        1.00      3.7±0.01ms        ? ?/sec    1.00      3.7±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                         1.00    455.3±1.34µs        ? ?/sec    1.00    454.9±1.33µs        ? ?/sec
lexsort_to_indices([f64]): 32768                                                                                                                        1.00    595.3±1.11µs        ? ?/sec
lexsort_to_indices([f64]): 4096                                                                                                                         1.00     48.9±0.04µs        ? ?/sec
lexsort_to_indices([f64_opt]): 32768                                                                                                                    1.00    493.5±1.07µs        ? ?/sec
lexsort_to_indices([f64_opt]): 4096                                                                                                                     1.00     42.2±0.07µs        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                       1.00    214.7±5.04ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                         1.00      4.0±0.01ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                          1.00    417.9±1.49µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576                                                                                               1.00    244.7±2.67ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768                                                                                                 1.00      2.8±0.01ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 4096                                                                                                  1.00    232.7±0.75µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 32768                                                              1.00      2.7±0.00ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 4096                                                               1.02    242.2±0.67µs        ? ?/sec    1.00    238.3±1.41µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 32768                                                                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 4096                                                                         1.00    233.1±0.90µs        ? ?/sec    1.01    234.4±0.53µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 32768                                                                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, str(16)]): 4096                                                                         1.00    233.3±0.66µs        ? ?/sec    1.00    234.0±0.55µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 32768                                                                    1.00      2.7±0.00ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 4096                                                                     1.00    234.0±0.64µs        ? ?/sec    1.00    234.0±0.70µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 32768                                                                1.01      2.7±0.01ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 4096                                                                 1.00    235.1±0.65µs        ? ?/sec    1.00    234.0±0.66µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 32768                                                                    1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 4096                                                                     1.00    234.1±0.90µs        ? ?/sec    1.00    235.0±0.71µs        ? ?/sec
lexsort_to_indices([i32]): 32768                                                                                                                        1.00    444.9±0.48µs        ? ?/sec
lexsort_to_indices([i32]): 4096                                                                                                                         1.00     44.1±0.04µs        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 32768                                                               1.01      5.7±0.01ms        ? ?/sec    1.00      5.7±0.01ms        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 4096                                                                1.00    515.6±0.84µs        ? ?/sec    1.00    517.2±1.12µs        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 32768                                                      1.00      3.5±0.01ms        ? ?/sec    1.01      3.5±0.01ms        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 4096                                                       1.00    330.5±1.01µs        ? ?/sec    1.00    329.8±0.63µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 32768                                                                   1.00      3.6±0.00ms        ? ?/sec    1.00      3.6±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 4096                                                                    1.00    304.9±0.94µs        ? ?/sec    1.00    306.2±3.63µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                  1.00      4.1±0.00ms        ? ?/sec    1.00      4.1±0.01ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                   1.01    365.7±0.47µs        ? ?/sec    1.00    362.1±0.50µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 32768                                                               1.00      3.8±0.00ms        ? ?/sec    1.00      3.8±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 4096                                                                1.00    328.0±0.54µs        ? ?/sec    1.00    328.5±0.55µs        ? ?/sec
lexsort_to_indices([i32_opt]): 32768                                                                                                                    1.00    376.7±0.48µs        ? ?/sec
lexsort_to_indices([i32_opt]): 4096                                                                                                                     1.00     38.4±0.05µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768                                                                                                          1.00      3.6±0.01ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 4096                                                                                                           1.00    273.6±1.32µs        ? ?/sec
lexsort_to_indices([i64]): 32768                                                                                                                        1.00    467.8±2.53µs        ? ?/sec
lexsort_to_indices([i64]): 4096                                                                                                                         1.00     43.0±0.03µs        ? ?/sec
lexsort_to_indices([i64_opt]): 32768                                                                                                                    1.00    391.9±0.64µs        ? ?/sec
lexsort_to_indices([i64_opt]): 4096                                                                                                                     1.00     37.9±0.04µs        ? ?/sec
lexsort_to_indices([str(16)]): 32768                                                                                                                    1.00    573.1±2.52µs        ? ?/sec
lexsort_to_indices([str(16)]): 4096                                                                                                                     1.00     52.4±0.19µs        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 32768                                                                    1.03      9.7±0.16ms        ? ?/sec    1.00      9.4±0.18ms        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 4096                                                                     1.00    590.5±0.97µs        ? ?/sec    1.00    589.8±1.33µs        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 32768                                                                1.00     10.3±0.13ms        ? ?/sec    1.00     10.3±0.09ms        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 4096                                                                 1.00    677.8±0.84µs        ? ?/sec    1.01    683.2±0.57µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                         1.00      5.4±0.00ms        ? ?/sec    1.01      5.4±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                          1.00    461.9±1.44µs        ? ?/sec    1.01    464.5±0.84µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768                                                                1.00      5.3±0.00ms        ? ?/sec    1.01      5.3±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 4096                                                                 1.00    454.4±0.67µs        ? ?/sec    1.00    455.6±1.13µs        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 32768                                                   1.00      5.7±0.01ms        ? ?/sec    1.01      5.7±0.02ms        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 4096                                                    1.00    475.8±1.11µs        ? ?/sec    1.00    477.6±1.23µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 32768                                                                                                                1.00    485.0±4.93µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 4096                                                                                                                 1.00     45.2±0.18µs        ? ?/sec

Per-runner information
lexsort — shard 1/1

Node: gk3-benchmark-cluster-nap-1afkvotn-5d03c368-fcjq

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

uname:

Linux bench-c6836373591-4847-mn8wm 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench lexsort
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 785.2s
Peak memory 56.5 MiB
Avg memory 18.6 MiB
CPU user 781.5s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 2740.6s
Peak memory 80.5 MiB
Avg memory 19.7 MiB
CPU user 2719.5s
CPU sys 14.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: lexsort

Comparing radix_row_sort (d3824b8) to cd91f89 (merge-base) diff

Run configuration
run benchmark lexsort
env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
  arch: amd64
shards: 1
Details
group                                                                                                            base                                   changed
-----                                                                                                            ----                                   -------
encode([decimal128(18,2), i32]): 32768                                                                                                                  1.00    309.2±0.61µs        ? ?/sec
encode([decimal128(18,2), i32]): 4096                                                                                                                   1.00     38.8±0.30µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                           1.00  1658.6±23.31µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                            1.00    133.7±1.76µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                       1.00      2.0±0.02ms        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                        1.00    151.0±2.51µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                           1.00    713.4±8.88µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                            1.00     71.2±1.52µs        ? ?/sec
encode([f64]): 32768                                                                                                                                    1.00     54.3±2.89µs        ? ?/sec
encode([f64]): 4096                                                                                                                                     1.00      7.0±0.47µs        ? ?/sec
encode([f64_opt]): 32768                                                                                                                                1.00    107.4±7.59µs        ? ?/sec
encode([f64_opt]): 4096                                                                                                                                 1.00      8.0±0.46µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                                   1.00      5.5±0.05ms        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                                     1.00    140.2±1.37µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                      1.00     17.5±0.28µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                           1.00      4.0±0.06ms        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 32768                                                                                                             1.00    103.3±0.88µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 4096                                                                                                              1.00     13.0±0.13µs        ? ?/sec
encode([i32, i32_list, str(16)]): 32768                                                                                                                 1.00  1388.1±21.36µs        ? ?/sec
encode([i32, i32_list, str(16)]): 4096                                                                                                                  1.00    140.4±3.40µs        ? ?/sec
encode([i32, i32_opt]): 32768                                                                                                                           1.00    130.7±8.21µs        ? ?/sec
encode([i32, i32_opt]): 4096                                                                                                                            1.00     10.5±0.70µs        ? ?/sec
encode([i32, str(16)]): 32768                                                                                                                           1.00    249.1±1.19µs        ? ?/sec
encode([i32, str(16)]): 4096                                                                                                                            1.00     29.8±0.20µs        ? ?/sec
encode([i32, str_list(4)]): 32768                                                                                                                       1.00      5.3±0.08ms        ? ?/sec
encode([i32, str_list(4)]): 4096                                                                                                                        1.00    613.0±6.96µs        ? ?/sec
encode([i32, str_list_opt(4)]): 32768                                                                                                                   1.00      5.3±0.08ms        ? ?/sec
encode([i32, str_list_opt(4)]): 4096                                                                                                                    1.00    606.1±9.21µs        ? ?/sec
encode([i32, str_opt(16)]): 32768                                                                                                                       1.00    412.4±6.23µs        ? ?/sec
encode([i32, str_opt(16)]): 4096                                                                                                                        1.00     39.0±0.58µs        ? ?/sec
encode([i32]): 32768                                                                                                                                    1.00     46.3±2.93µs        ? ?/sec
encode([i32]): 4096                                                                                                                                     1.00      5.8±0.39µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 32768                                                                                                                  1.00  1391.4±26.45µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 4096                                                                                                                   1.00    137.5±3.20µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                         1.00    430.2±6.91µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                          1.00     44.1±0.52µs        ? ?/sec
encode([i32_opt, i32_list]): 32768                                                                                                                      1.00  1205.7±18.86µs        ? ?/sec
encode([i32_opt, i32_list]): 4096                                                                                                                       1.00    120.0±1.59µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                                     1.00  1840.2±34.08µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                                      1.00    198.5±3.95µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 32768                                                                                                                  1.00  1404.3±25.61µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 4096                                                                                                                   1.00    137.9±3.10µs        ? ?/sec
encode([i32_opt]): 32768                                                                                                                                1.00     93.0±6.54µs        ? ?/sec
encode([i32_opt]): 4096                                                                                                                                 1.00      7.3±0.24µs        ? ?/sec
encode([i64(0..1000), i32]): 32768                                                                                                                      1.00    109.6±0.37µs        ? ?/sec
encode([i64(0..1000), i32]): 4096                                                                                                                       1.00     12.4±0.93µs        ? ?/sec
encode([i64]): 32768                                                                                                                                    1.00     51.4±3.78µs        ? ?/sec
encode([i64]): 4096                                                                                                                                     1.00      6.2±0.44µs        ? ?/sec
encode([i64_opt]): 32768                                                                                                                                1.00     91.1±6.06µs        ? ?/sec
encode([i64_opt]): 4096                                                                                                                                 1.00      6.6±0.36µs        ? ?/sec
encode([str(16)]): 32768                                                                                                                                1.00    154.5±9.46µs        ? ?/sec
encode([str(16)]): 4096                                                                                                                                 1.00     19.0±1.23µs        ? ?/sec
encode([str_list(4), i32]): 32768                                                                                                                       1.00      6.0±0.20ms        ? ?/sec
encode([str_list(4), i32]): 4096                                                                                                                        1.00    605.9±9.99µs        ? ?/sec
encode([str_list_opt(4), i32]): 32768                                                                                                                   1.00      5.4±0.09ms        ? ?/sec
encode([str_list_opt(4), i32]): 4096                                                                                                                    1.00   620.2±12.35µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                            1.00  1640.4±16.16µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                             1.00    145.8±0.93µs        ? ?/sec
encode([str_opt(16), str(16)]): 32768                                                                                                                   1.00   544.3±10.48µs        ? ?/sec
encode([str_opt(16), str(16)]): 4096                                                                                                                    1.00     54.9±0.29µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 32768                                                                                                      1.00   1100.0±7.67µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                       1.00    107.1±1.45µs        ? ?/sec
encode([str_opt(16)]): 32768                                                                                                                            1.00   298.6±20.01µs        ? ?/sec
encode([str_opt(16)]): 4096                                                                                                                             1.00     27.3±1.65µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 32768                                                                                                           1.00   991.6±37.00µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 4096                                                                                                            1.00    113.1±0.98µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                    1.00      4.0±0.05ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                     1.00    321.7±5.64µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                1.00      4.4±0.07ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                 1.00    346.0±7.43µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                    1.00      2.1±0.04ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                     1.00    201.8±4.60µs        ? ?/sec
lexsort_radix([f64]): 32768                                                                                                                             1.00   703.7±47.63µs        ? ?/sec
lexsort_radix([f64]): 4096                                                                                                                              1.00     48.7±3.51µs        ? ?/sec
lexsort_radix([f64_opt]): 32768                                                                                                                         1.00   771.6±47.41µs        ? ?/sec
lexsort_radix([f64_opt]): 4096                                                                                                                          1.00     72.7±4.70µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                            1.00     58.1±1.35ms        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                              1.00    759.1±9.44µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                               1.00    117.6±1.43µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                    1.00     60.9±3.79ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768                                                                                                      1.00    969.1±5.18µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 4096                                                                                                       1.00     55.5±0.94µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 32768                                                                                                          1.00  1917.0±24.95µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 4096                                                                                                           1.00    208.4±4.25µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 32768                                                                                                                    1.00   531.4±35.92µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 4096                                                                                                                     1.00     46.6±3.09µs        ? ?/sec
lexsort_radix([i32, str(16)]): 32768                                                                                                                    1.00    757.2±3.68µs        ? ?/sec
lexsort_radix([i32, str(16)]): 4096                                                                                                                     1.00     77.0±0.54µs        ? ?/sec
lexsort_radix([i32, str_list(4)]): 32768                                                                                                                1.00      5.9±0.10ms        ? ?/sec
lexsort_radix([i32, str_list(4)]): 4096                                                                                                                 1.00   702.3±10.47µs        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 32768                                                                                                            1.00      6.1±0.16ms        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 4096                                                                                                             1.00   697.9±11.30µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 32768                                                                                                                1.00   944.9±11.11µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 4096                                                                                                                 1.00     95.5±0.57µs        ? ?/sec
lexsort_radix([i32]): 32768                                                                                                                             1.00   422.6±26.90µs        ? ?/sec
lexsort_radix([i32]): 4096                                                                                                                              1.00     41.7±2.63µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 32768                                                                                                           1.00      2.3±0.03ms        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 4096                                                                                                            1.00    246.0±3.94µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                  1.00  1404.9±28.06µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                   1.00    117.2±4.70µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 32768                                                                                                               1.00      2.1±0.03ms        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 4096                                                                                                                1.00    205.7±3.29µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                              1.00      2.8±0.08ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                               1.00    282.9±5.91µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 32768                                                                                                           1.00      2.3±0.06ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 4096                                                                                                            1.00    219.4±5.60µs        ? ?/sec
lexsort_radix([i32_opt]): 32768                                                                                                                         1.00   847.8±46.09µs        ? ?/sec
lexsort_radix([i32_opt]): 4096                                                                                                                          1.00     62.8±3.34µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768                                                                                                               1.00   898.7±64.76µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 4096                                                                                                                1.00     55.4±3.34µs        ? ?/sec
lexsort_radix([i64]): 32768                                                                                                                             1.00   429.1±25.78µs        ? ?/sec
lexsort_radix([i64]): 4096                                                                                                                              1.00     40.6±2.52µs        ? ?/sec
lexsort_radix([i64_opt]): 32768                                                                                                                         1.00   754.9±35.70µs        ? ?/sec
lexsort_radix([i64_opt]): 4096                                                                                                                          1.00     53.5±3.53µs        ? ?/sec
lexsort_radix([str(16)]): 32768                                                                                                                         1.00   673.2±37.35µs        ? ?/sec
lexsort_radix([str(16)]): 4096                                                                                                                          1.00     71.0±3.81µs        ? ?/sec
lexsort_radix([str_list(4), i32]): 32768                                                                                                                1.00      7.2±0.21ms        ? ?/sec
lexsort_radix([str_list(4), i32]): 4096                                                                                                                 1.00   742.5±12.73µs        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 32768                                                                                                            1.00      6.7±0.11ms        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 4096                                                                                                             1.00   743.3±13.17µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                     1.00      2.6±0.02ms        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                      1.00    246.0±1.75µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768                                                                                                            1.00   1399.2±7.23µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 4096                                                                                                             1.00    145.0±1.64µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 32768                                                                                               1.00      2.0±0.01ms        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                1.00    210.3±1.72µs        ? ?/sec
lexsort_radix([str_opt(16)]): 32768                                                                                                                     1.00   985.2±56.98µs        ? ?/sec
lexsort_radix([str_opt(16)]): 4096                                                                                                                      1.00    103.6±7.08µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 32768                                                                                                            1.00      2.5±0.01ms        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 4096                                                                                                             1.00    239.0±3.45µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768              1.04      6.4±0.18ms        ? ?/sec    1.00      6.2±0.13ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096               1.02    528.0±9.47µs        ? ?/sec    1.00    515.2±9.52µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768          1.04      7.3±0.22ms        ? ?/sec    1.00      7.0±0.10ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096           1.02    628.9±8.10µs        ? ?/sec    1.00    614.6±9.26µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                              1.03      2.8±0.07ms        ? ?/sec    1.00      2.7±0.03ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                               1.01    275.5±8.27µs        ? ?/sec    1.00    272.3±5.33µs        ? ?/sec
lexsort_rows([f64]): 32768                                                                                                                              1.00  1887.1±119.89µs        ? ?/sec
lexsort_rows([f64]): 4096                                                                                                                               1.00   176.0±11.64µs        ? ?/sec
lexsort_rows([f64_opt]): 32768                                                                                                                          1.00  1740.8±96.82µs        ? ?/sec
lexsort_rows([f64_opt]): 4096                                                                                                                           1.00    150.5±9.33µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                             1.00     98.6±1.45ms        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                               1.00  1949.1±25.45µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                1.00    232.9±2.95µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                     1.00    127.1±1.24ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 32768                                                                                                       1.00      2.2±0.05ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 4096                                                                                                        1.00    201.6±1.15µs        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 32768                                                                    1.00      4.4±0.15ms        ? ?/sec    1.06      4.6±0.08ms        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 4096                                                                     1.00   421.4±26.85µs        ? ?/sec    1.09   457.2±12.65µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 32768                                                                              1.15      2.3±0.03ms        ? ?/sec    1.00      2.0±0.12ms        ? ?/sec
lexsort_rows([i32, i32_opt]): 4096                                                                               1.18    212.1±5.23µs        ? ?/sec    1.00   180.4±11.35µs        ? ?/sec
lexsort_rows([i32, str(16)]): 32768                                                                              1.00      2.4±0.05ms        ? ?/sec    1.02      2.5±0.01ms        ? ?/sec
lexsort_rows([i32, str(16)]): 4096                                                                               1.00    224.9±5.58µs        ? ?/sec    1.02    229.1±1.25µs        ? ?/sec
lexsort_rows([i32, str_list(4)]): 32768                                                                          1.00      9.4±0.26ms        ? ?/sec    1.01      9.5±0.22ms        ? ?/sec
lexsort_rows([i32, str_list(4)]): 4096                                                                           1.02   959.1±15.07µs        ? ?/sec    1.00   944.8±12.30µs        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 32768                                                                      1.00      8.6±0.77ms        ? ?/sec    1.09      9.4±0.15ms        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 4096                                                                       1.00   773.8±16.70µs        ? ?/sec    1.25   966.6±14.65µs        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 32768                                                                          1.00      2.6±0.05ms        ? ?/sec    1.01      2.7±0.01ms        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 4096                                                                           1.00    244.4±3.44µs        ? ?/sec    1.02    249.1±1.40µs        ? ?/sec
lexsort_rows([i32]): 32768                                                                                                                              1.00  1992.9±119.01µs        ? ?/sec
lexsort_rows([i32]): 4096                                                                                                                               1.00   183.7±13.08µs        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 32768                                                                     1.00      4.4±0.09ms        ? ?/sec    1.01      4.5±0.06ms        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 4096                                                                      1.01    453.7±7.18µs        ? ?/sec    1.00    447.1±7.10µs        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 32768                                                            1.00      3.1±0.05ms        ? ?/sec    1.00      3.1±0.07ms        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 4096                                                             1.03    305.7±5.46µs        ? ?/sec    1.00   297.0±11.86µs        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 32768                                                                         1.00      4.2±0.06ms        ? ?/sec    1.00      4.2±0.06ms        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 4096                                                                          1.00    435.5±8.42µs        ? ?/sec    1.01    438.7±6.14µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                        1.00      4.3±0.27ms        ? ?/sec    1.13      4.8±0.08ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                         1.00   463.4±22.09µs        ? ?/sec    1.05   486.5±10.59µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 32768                                                                     1.02      4.5±0.10ms        ? ?/sec    1.00      4.4±0.08ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 4096                                                                      1.00    445.1±8.35µs        ? ?/sec    1.01   449.4±10.39µs        ? ?/sec
lexsort_rows([i32_opt]): 32768                                                                                                                          1.00  1925.7±68.85µs        ? ?/sec
lexsort_rows([i32_opt]): 4096                                                                                                                           1.00    164.9±7.44µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 32768                                                                                                                1.00      2.0±0.16ms        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 4096                                                                                                                 1.00    189.7±9.97µs        ? ?/sec
lexsort_rows([i64]): 32768                                                                                                                              1.00  1847.3±102.11µs        ? ?/sec
lexsort_rows([i64]): 4096                                                                                                                               1.00    167.9±9.62µs        ? ?/sec
lexsort_rows([i64_opt]): 32768                                                                                                                          1.00  1703.7±94.59µs        ? ?/sec
lexsort_rows([i64_opt]): 4096                                                                                                                           1.00   148.5±10.11µs        ? ?/sec
lexsort_rows([str(16)]): 32768                                                                                                                          1.00      2.0±0.12ms        ? ?/sec
lexsort_rows([str(16)]): 4096                                                                                                                           1.00    185.5±9.90µs        ? ?/sec
lexsort_rows([str_list(4), i32]): 32768                                                                          1.00      8.6±0.29ms        ? ?/sec    1.04      9.0±0.21ms        ? ?/sec
lexsort_rows([str_list(4), i32]): 4096                                                                           1.03   887.4±11.23µs        ? ?/sec    1.00   862.7±15.73µs        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 32768                                                                      1.00      7.8±0.14ms        ? ?/sec    1.07      8.4±0.27ms        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 4096                                                                       1.00   809.1±54.51µs        ? ?/sec    1.09   879.6±24.10µs        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                               1.00      4.0±0.10ms        ? ?/sec    1.05      4.2±0.03ms        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                1.00    376.2±5.43µs        ? ?/sec    1.02    383.8±6.27µs        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 32768                                                                      1.00      2.8±0.04ms        ? ?/sec    1.02      2.9±0.04ms        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 4096                                                                       1.00    280.9±5.46µs        ? ?/sec    1.02    285.9±2.38µs        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 32768                                                         1.00      3.5±0.06ms        ? ?/sec    1.02      3.6±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 4096                                                          1.00    332.3±8.32µs        ? ?/sec    1.00    333.7±1.85µs        ? ?/sec
lexsort_rows([str_opt(16)]): 32768                                                                                                                      1.00  1967.8±114.88µs        ? ?/sec
lexsort_rows([str_opt(16)]): 4096                                                                                                                       1.00   179.9±10.45µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 32768                                                                                                      1.00  1810.7±20.50µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 4096                                                                                                       1.00    177.8±3.31µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768        1.00     10.0±0.16ms        ? ?/sec    1.00     10.0±0.44ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096         1.03   866.8±16.63µs        ? ?/sec    1.00   842.3±10.67µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768    1.03      9.9±0.14ms        ? ?/sec    1.00      9.6±0.23ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096     1.02   940.7±18.30µs        ? ?/sec    1.00   921.1±17.17µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                        1.04      3.2±0.05ms        ? ?/sec    1.00      3.0±0.04ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                         1.00   388.2±16.82µs        ? ?/sec    1.00    387.1±7.99µs        ? ?/sec
lexsort_to_indices([f64]): 32768                                                                                                                        1.00   731.4±41.07µs        ? ?/sec
lexsort_to_indices([f64]): 4096                                                                                                                         1.00     55.5±3.44µs        ? ?/sec
lexsort_to_indices([f64_opt]): 32768                                                                                                                    1.00   600.7±39.95µs        ? ?/sec
lexsort_to_indices([f64_opt]): 4096                                                                                                                     1.00     46.6±2.95µs        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                       1.00    137.2±1.17ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                         1.00      3.5±0.03ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                          1.00    386.1±5.52µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576                                                                                               1.00    146.1±5.02ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768                                                                                                 1.00  1528.2±10.85µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 4096                                                                                                  1.00    141.3±1.07µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 32768                                                              1.00  1517.5±43.07µs        ? ?/sec    1.04  1571.3±23.79µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 4096                                                               1.00    145.5±4.30µs        ? ?/sec    1.05    152.2±4.11µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 32768                                                                        1.09  1526.5±27.21µs        ? ?/sec    1.00  1394.9±85.37µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 4096                                                                         1.17    150.3±2.54µs        ? ?/sec    1.00   128.6±10.27µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 32768                                                                        1.00  1539.7±21.27µs        ? ?/sec    1.02   1567.0±8.80µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 4096                                                                         1.00    148.5±3.51µs        ? ?/sec    1.01    150.3±0.79µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 32768                                                                    1.00  1531.6±19.71µs        ? ?/sec    1.01  1549.2±22.20µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 4096                                                                     1.00    147.4±3.09µs        ? ?/sec    1.00    147.2±2.44µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 32768                                                                1.00  1208.5±14.27µs        ? ?/sec    1.27  1529.2±22.06µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 4096                                                                 1.00    147.3±2.48µs        ? ?/sec    1.01    148.1±2.35µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 32768                                                                    1.00  1529.9±20.68µs        ? ?/sec    1.03  1568.5±21.10µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 4096                                                                     1.00    147.9±2.06µs        ? ?/sec    1.04    154.5±1.79µs        ? ?/sec
lexsort_to_indices([i32]): 32768                                                                                                                        1.00   459.0±26.65µs        ? ?/sec
lexsort_to_indices([i32]): 4096                                                                                                                         1.00     38.9±2.30µs        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 32768                                                               1.00      5.0±0.08ms        ? ?/sec    1.01      5.0±0.05ms        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 4096                                                                1.00   517.4±14.49µs        ? ?/sec    1.01    520.4±9.46µs        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 32768                                                      1.00      2.7±0.04ms        ? ?/sec    1.00      2.7±0.05ms        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 4096                                                       1.00    283.8±6.61µs        ? ?/sec    1.03    291.2±7.79µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 32768                                                                   1.00      2.8±0.12ms        ? ?/sec    1.00      2.8±0.03ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 4096                                                                    1.00    260.6±3.95µs        ? ?/sec    1.00    261.4±3.73µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                  1.00      2.8±0.16ms        ? ?/sec    1.17      3.3±0.06ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                   1.00   296.6±15.57µs        ? ?/sec    1.05    311.9±5.37µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 32768                                                               1.00      3.0±0.06ms        ? ?/sec    1.01      3.1±0.06ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 4096                                                                1.00    290.2±5.31µs        ? ?/sec    1.00    290.2±4.33µs        ? ?/sec
lexsort_to_indices([i32_opt]): 32768                                                                                                                    1.00   436.3±11.58µs        ? ?/sec
lexsort_to_indices([i32_opt]): 4096                                                                                                                     1.00     35.2±2.15µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768                                                                                                          1.00      2.4±0.16ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 4096                                                                                                           1.00   158.0±11.30µs        ? ?/sec
lexsort_to_indices([i64]): 32768                                                                                                                        1.00   611.1±39.56µs        ? ?/sec
lexsort_to_indices([i64]): 4096                                                                                                                         1.00     42.6±2.76µs        ? ?/sec
lexsort_to_indices([i64_opt]): 32768                                                                                                                    1.00   511.8±34.72µs        ? ?/sec
lexsort_to_indices([i64_opt]): 4096                                                                                                                     1.00     36.3±2.47µs        ? ?/sec
lexsort_to_indices([str(16)]): 32768                                                                                                                    1.00   581.0±36.22µs        ? ?/sec
lexsort_to_indices([str(16)]): 4096                                                                                                                     1.00     45.9±2.42µs        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 32768                                                                    1.01      6.4±0.09ms        ? ?/sec    1.00      6.3±0.12ms        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 4096                                                                     1.01   533.4±12.49µs        ? ?/sec    1.00   528.7±22.13µs        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 32768                                                                1.00      7.5±0.20ms        ? ?/sec    1.03      7.7±0.11ms        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 4096                                                                 1.00   568.9±35.32µs        ? ?/sec    1.20   683.4±10.02µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                         1.00      4.3±0.08ms        ? ?/sec    1.03      4.4±0.02ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                          1.00    413.2±8.90µs        ? ?/sec    1.02    422.2±6.02µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768                                                                1.00      4.3±0.13ms        ? ?/sec    1.03      4.4±0.05ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 4096                                                                 1.00    412.8±7.44µs        ? ?/sec    1.00    413.6±2.23µs        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 32768                                                   1.00      4.6±0.06ms        ? ?/sec    1.02      4.7±0.03ms        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 4096                                                    1.00    428.2±8.56µs        ? ?/sec    1.03    440.7±1.71µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 32768                                                                                                                1.00   477.7±28.71µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 4096                                                                                                                 1.00     38.9±2.14µs        ? ?/sec

Per-runner information
lexsort — shard 1/1

Node: gk3-benchmark-cluster-nap-1ev1lxub-3df3c234-xmx6

Instance: c4-highmem-16 (12 vCPU / 65 GiB)

uname:

Linux bench-c6836380688-4850-pqt9k 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench lexsort
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 795.2s
Peak memory 58.8 MiB
Avg memory 20.8 MiB
CPU user 790.3s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 2725.6s
Peak memory 83.1 MiB
Avg memory 21.5 MiB
CPU user 2712.3s
CPU sys 10.9s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: lexsort

Comparing radix_row_sort (d3824b8) to cd91f89 (merge-base) diff

Run configuration
run benchmark lexsort
env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1
Details
group                                                                                                            base                                   changed
-----                                                                                                            ----                                   -------
encode([decimal128(18,2), i32]): 32768                                                                                                                  1.00    226.4±0.38µs        ? ?/sec
encode([decimal128(18,2), i32]): 4096                                                                                                                   1.00     28.3±0.02µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                           1.00   1192.5±6.31µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                            1.00    118.3±1.65µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                       1.00   1471.0±5.14µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                        1.00    129.4±0.36µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                           1.00    572.7±2.20µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                            1.00     64.2±0.06µs        ? ?/sec
encode([f64]): 32768                                                                                                                                    1.00     38.7±0.02µs        ? ?/sec
encode([f64]): 4096                                                                                                                                     1.00      5.2±0.01µs        ? ?/sec
encode([f64_opt]): 32768                                                                                                                                1.00     67.7±0.16µs        ? ?/sec
encode([f64_opt]): 4096                                                                                                                                 1.00      6.2±0.01µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                                   1.00      3.4±0.06ms        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                                     1.00     93.3±0.06µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                      1.00     12.0±0.01µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                           1.00      2.4±0.03ms        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 32768                                                                                                             1.00     65.4±0.06µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 4096                                                                                                              1.00      8.4±0.01µs        ? ?/sec
encode([i32, i32_list, str(16)]): 32768                                                                                                                 1.00  1090.2±10.63µs        ? ?/sec
encode([i32, i32_list, str(16)]): 4096                                                                                                                  1.00    116.4±1.60µs        ? ?/sec
encode([i32, i32_opt]): 32768                                                                                                                           1.00     93.2±1.03µs        ? ?/sec
encode([i32, i32_opt]): 4096                                                                                                                            1.00      9.1±0.01µs        ? ?/sec
encode([i32, str(16)]): 32768                                                                                                                           1.00   224.8±14.68µs        ? ?/sec
encode([i32, str(16)]): 4096                                                                                                                            1.00     28.0±1.87µs        ? ?/sec
encode([i32, str_list(4)]): 32768                                                                                                                       1.00      3.4±0.12ms        ? ?/sec
encode([i32, str_list(4)]): 4096                                                                                                                        1.00    343.3±2.08µs        ? ?/sec
encode([i32, str_list_opt(4)]): 32768                                                                                                                   1.00      3.1±0.06ms        ? ?/sec
encode([i32, str_list_opt(4)]): 4096                                                                                                                    1.00    328.7±0.90µs        ? ?/sec
encode([i32, str_opt(16)]): 32768                                                                                                                       1.00    298.5±1.94µs        ? ?/sec
encode([i32, str_opt(16)]): 4096                                                                                                                        1.00     28.3±0.54µs        ? ?/sec
encode([i32]): 32768                                                                                                                                    1.00     34.2±0.02µs        ? ?/sec
encode([i32]): 4096                                                                                                                                     1.00      4.7±0.14µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 32768                                                                                                                  1.00   1036.6±2.79µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 4096                                                                                                                   1.00     97.8±0.36µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                         1.00    340.2±2.50µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                          1.00     37.3±0.03µs        ? ?/sec
encode([i32_opt, i32_list]): 32768                                                                                                                      1.00    940.1±2.77µs        ? ?/sec
encode([i32_opt, i32_list]): 4096                                                                                                                       1.00     95.2±0.13µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                                     1.00   1382.9±2.90µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                                      1.00    138.4±0.50µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 32768                                                                                                                  1.00   1045.6±2.74µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 4096                                                                                                                   1.00     97.8±0.39µs        ? ?/sec
encode([i32_opt]): 32768                                                                                                                                1.00     66.0±0.18µs        ? ?/sec
encode([i32_opt]): 4096                                                                                                                                 1.00      5.7±0.00µs        ? ?/sec
encode([i64(0..1000), i32]): 32768                                                                                                                      1.00     65.0±0.12µs        ? ?/sec
encode([i64(0..1000), i32]): 4096                                                                                                                       1.00      8.4±0.01µs        ? ?/sec
encode([i64]): 32768                                                                                                                                    1.00     35.0±0.05µs        ? ?/sec
encode([i64]): 4096                                                                                                                                     1.00      4.7±0.00µs        ? ?/sec
encode([i64_opt]): 32768                                                                                                                                1.00     65.3±0.22µs        ? ?/sec
encode([i64_opt]): 4096                                                                                                                                 1.00      5.8±0.00µs        ? ?/sec
encode([str(16)]): 32768                                                                                                                                1.00   187.0±13.15µs        ? ?/sec
encode([str(16)]): 4096                                                                                                                                 1.00     23.8±1.51µs        ? ?/sec
encode([str_list(4), i32]): 32768                                                                                                                       1.00      3.5±0.14ms        ? ?/sec
encode([str_list(4), i32]): 4096                                                                                                                        1.00    344.1±3.03µs        ? ?/sec
encode([str_list_opt(4), i32]): 32768                                                                                                                   1.00      3.1±0.05ms        ? ?/sec
encode([str_list_opt(4), i32]): 4096                                                                                                                    1.00    328.0±1.17µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                            1.00  1149.7±14.40µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                             1.00    112.1±2.81µs        ? ?/sec
encode([str_opt(16), str(16)]): 32768                                                                                                                   1.00   446.3±14.35µs        ? ?/sec
encode([str_opt(16), str(16)]): 4096                                                                                                                    1.00     46.9±2.17µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 32768                                                                                                      1.00    785.8±9.94µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                       1.00     82.6±1.98µs        ? ?/sec
encode([str_opt(16)]): 32768                                                                                                                            1.00    268.4±1.19µs        ? ?/sec
encode([str_opt(16)]): 4096                                                                                                                             1.00     24.5±0.46µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 32768                                                                                                           1.00    665.4±1.23µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 4096                                                                                                            1.00     78.5±0.04µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                    1.00      3.5±0.01ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                     1.00    300.1±1.71µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                1.00      3.9±0.01ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                 1.00    326.4±1.08µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                    1.00   1972.1±5.25µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                     1.00    190.3±0.26µs        ? ?/sec
lexsort_radix([f64]): 32768                                                                                                                             1.00    579.4±1.27µs        ? ?/sec
lexsort_radix([f64]): 4096                                                                                                                              1.00     42.8±0.06µs        ? ?/sec
lexsort_radix([f64_opt]): 32768                                                                                                                         1.00    661.6±1.11µs        ? ?/sec
lexsort_radix([f64_opt]): 4096                                                                                                                          1.00     72.9±0.13µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                            1.00     39.6±0.52ms        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                              1.00    658.7±2.92µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                               1.00    108.2±0.87µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                    1.00     38.1±0.60ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768                                                                                                      1.00    756.5±1.40µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 4096                                                                                                       1.00     43.7±0.64µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 32768                                                                                                          1.00  1469.9±11.41µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 4096                                                                                                           1.00    152.9±1.56µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 32768                                                                                                                    1.00    443.1±3.96µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 4096                                                                                                                     1.00     39.9±0.18µs        ? ?/sec
lexsort_radix([i32, str(16)]): 32768                                                                                                                    1.00   586.5±14.51µs        ? ?/sec
lexsort_radix([i32, str(16)]): 4096                                                                                                                     1.00     62.4±1.88µs        ? ?/sec
lexsort_radix([i32, str_list(4)]): 32768                                                                                                                1.00      4.1±0.16ms        ? ?/sec
lexsort_radix([i32, str_list(4)]): 4096                                                                                                                 1.00    406.7±3.32µs        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 32768                                                                                                            1.00      3.7±0.10ms        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 4096                                                                                                             1.00    398.5±1.70µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 32768                                                                                                                1.00    675.1±4.17µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 4096                                                                                                                 1.00     62.9±0.51µs        ? ?/sec
lexsort_radix([i32]): 32768                                                                                                                             1.00    359.1±2.96µs        ? ?/sec
lexsort_radix([i32]): 4096                                                                                                                              1.00     35.2±0.13µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 32768                                                                                                           1.00   1793.8±2.69µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 4096                                                                                                            1.00    180.3±0.56µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                  1.00   1111.1±4.28µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                   1.00     97.3±0.11µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 32768                                                                                                               1.00   1620.4±2.81µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 4096                                                                                                                1.00    148.6±0.18µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                              1.00      2.1±0.00ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                               1.00    203.7±0.59µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 32768                                                                                                           1.00   1753.7±4.46µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 4096                                                                                                            1.00    159.9±0.46µs        ? ?/sec
lexsort_radix([i32_opt]): 32768                                                                                                                         1.00    673.5±1.77µs        ? ?/sec
lexsort_radix([i32_opt]): 4096                                                                                                                          1.00     52.8±0.09µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768                                                                                                               1.00    778.2±2.09µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 4096                                                                                                                1.00     48.3±0.29µs        ? ?/sec
lexsort_radix([i64]): 32768                                                                                                                             1.00    359.0±3.37µs        ? ?/sec
lexsort_radix([i64]): 4096                                                                                                                              1.00     34.9±0.03µs        ? ?/sec
lexsort_radix([i64_opt]): 32768                                                                                                                         1.00    662.2±1.59µs        ? ?/sec
lexsort_radix([i64_opt]): 4096                                                                                                                          1.00     51.3±0.07µs        ? ?/sec
lexsort_radix([str(16)]): 32768                                                                                                                         1.00   618.6±12.60µs        ? ?/sec
lexsort_radix([str(16)]): 4096                                                                                                                          1.00     70.7±1.61µs        ? ?/sec
lexsort_radix([str_list(4), i32]): 32768                                                                                                                1.00      4.5±0.19ms        ? ?/sec
lexsort_radix([str_list(4), i32]): 4096                                                                                                                 1.00    441.9±3.05µs        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 32768                                                                                                            1.00      4.2±0.13ms        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 4096                                                                                                             1.00    433.1±1.65µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                     1.00  1850.1±13.79µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                      1.00    181.7±2.94µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768                                                                                                            1.00  1065.9±13.08µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 4096                                                                                                             1.00    115.1±2.10µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 32768                                                                                               1.00   1445.9±9.23µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                1.00    154.8±2.16µs        ? ?/sec
lexsort_radix([str_opt(16)]): 32768                                                                                                                     1.00    880.6±1.74µs        ? ?/sec
lexsort_radix([str_opt(16)]): 4096                                                                                                                      1.00     94.8±0.45µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 32768                                                                                                            1.00   1948.3±3.65µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 4096                                                                                                             1.00    177.2±0.36µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768              1.00      6.4±0.02ms        ? ?/sec    1.01      6.5±0.02ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096               1.01    494.3±1.14µs        ? ?/sec    1.00    487.4±1.58µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768          1.00      6.7±0.03ms        ? ?/sec    1.01      6.8±0.03ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096           1.00    547.3±1.64µs        ? ?/sec    1.00    548.4±1.27µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                              1.00      2.5±0.00ms        ? ?/sec    1.05      2.7±0.00ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                               1.01    246.2±0.26µs        ? ?/sec    1.00    244.1±0.41µs        ? ?/sec
lexsort_rows([f64]): 32768                                                                                                                              1.00   1690.5±2.76µs        ? ?/sec
lexsort_rows([f64]): 4096                                                                                                                               1.00    155.7±0.27µs        ? ?/sec
lexsort_rows([f64_opt]): 32768                                                                                                                          1.00   1504.6±1.84µs        ? ?/sec
lexsort_rows([f64_opt]): 4096                                                                                                                           1.00    135.5±0.18µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                             1.00     76.8±0.60ms        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                               1.00   1277.7±2.02µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                1.00    155.3±0.19µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                     1.00    109.1±0.65ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 32768                                                                                                       1.00   1702.4±2.29µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 4096                                                                                                        1.00    158.7±0.24µs        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 32768                                                                    1.00      3.1±0.01ms        ? ?/sec    1.02      3.1±0.01ms        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 4096                                                                     1.00    275.6±0.63µs        ? ?/sec    1.01    278.1±1.74µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 32768                                                                              1.00   1721.3±7.88µs        ? ?/sec    1.03   1772.3±4.84µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 4096                                                                               1.00    155.1±0.95µs        ? ?/sec    1.02    158.8±0.32µs        ? ?/sec
lexsort_rows([i32, str(16)]): 32768                                                                              1.00   1887.3±6.57µs        ? ?/sec    1.00  1894.4±14.85µs        ? ?/sec
lexsort_rows([i32, str(16)]): 4096                                                                               1.01    172.3±0.89µs        ? ?/sec    1.00    170.7±1.96µs        ? ?/sec
lexsort_rows([i32, str_list(4)]): 32768                                                                          1.03      6.8±0.22ms        ? ?/sec    1.00      6.5±0.30ms        ? ?/sec
lexsort_rows([i32, str_list(4)]): 4096                                                                           1.00    592.9±4.57µs        ? ?/sec    1.01    596.3±5.06µs        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 32768                                                                      1.00      6.0±0.17ms        ? ?/sec    1.04      6.3±0.13ms        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 4096                                                                       1.00    574.6±1.77µs        ? ?/sec    1.01    581.7±2.48µs        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 32768                                                                          1.00      2.6±0.01ms        ? ?/sec    1.00      2.6±0.00ms        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 4096                                                                           1.01    232.5±0.85µs        ? ?/sec    1.00    230.9±0.71µs        ? ?/sec
lexsort_rows([i32]): 32768                                                                                                                              1.00   1655.8±3.00µs        ? ?/sec
lexsort_rows([i32]): 4096                                                                                                                               1.00    155.4±0.19µs        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 32768                                                                     1.00      2.9±0.01ms        ? ?/sec    1.02      2.9±0.00ms        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 4096                                                                      1.00    274.0±1.13µs        ? ?/sec    1.02    280.4±0.59µs        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 32768                                                            1.00      2.6±0.01ms        ? ?/sec    1.04      2.7±0.00ms        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 4096                                                             1.01    224.8±1.14µs        ? ?/sec    1.00    222.3±0.55µs        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 32768                                                                         1.00      3.1±0.01ms        ? ?/sec    1.00      3.1±0.00ms        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 4096                                                                          1.00    305.1±1.41µs        ? ?/sec    1.00    303.6±0.65µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                        1.00      3.7±0.01ms        ? ?/sec    1.02      3.7±0.01ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                         1.00    331.6±1.22µs        ? ?/sec    1.00    332.0±0.70µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 32768                                                                     1.01      3.3±0.01ms        ? ?/sec    1.00      3.2±0.00ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 4096                                                                      1.01    319.1±1.39µs        ? ?/sec    1.00    316.2±0.62µs        ? ?/sec
lexsort_rows([i32_opt]): 32768                                                                                                                          1.00   1469.2±6.70µs        ? ?/sec
lexsort_rows([i32_opt]): 4096                                                                                                                           1.00    133.6±0.27µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 32768                                                                                                                1.00   1697.7±3.17µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 4096                                                                                                                 1.00    155.6±0.61µs        ? ?/sec
lexsort_rows([i64]): 32768                                                                                                                              1.00   1687.3±1.90µs        ? ?/sec
lexsort_rows([i64]): 4096                                                                                                                               1.00    150.3±0.18µs        ? ?/sec
lexsort_rows([i64_opt]): 32768                                                                                                                          1.00   1505.0±1.26µs        ? ?/sec
lexsort_rows([i64_opt]): 4096                                                                                                                           1.00    133.9±0.17µs        ? ?/sec
lexsort_rows([str(16)]): 32768                                                                                                                          1.00  1969.4±13.35µs        ? ?/sec
lexsort_rows([str(16)]): 4096                                                                                                                           1.00    177.4±1.43µs        ? ?/sec
lexsort_rows([str_list(4), i32]): 32768                                                                          1.00      5.9±0.22ms        ? ?/sec    1.04      6.1±0.26ms        ? ?/sec
lexsort_rows([str_list(4), i32]): 4096                                                                           1.00    537.3±3.46µs        ? ?/sec    1.03    554.8±5.36µs        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 32768                                                                      1.00      5.5±0.11ms        ? ?/sec    1.04      5.7±0.13ms        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 4096                                                                       1.00    533.1±1.85µs        ? ?/sec    1.02    541.5±2.17µs        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                               1.00      3.3±0.01ms        ? ?/sec    1.04      3.4±0.01ms        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                1.00    278.1±1.85µs        ? ?/sec    1.01    281.4±3.01µs        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 32768                                                                      1.00      2.3±0.01ms        ? ?/sec    1.01      2.3±0.01ms        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 4096                                                                       1.02    207.5±1.23µs        ? ?/sec    1.00    203.1±2.11µs        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 32768                                                         1.00      2.9±0.01ms        ? ?/sec    1.04      3.1±0.01ms        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 4096                                                          1.00    255.9±1.32µs        ? ?/sec    1.01    258.1±2.00µs        ? ?/sec
lexsort_rows([str_opt(16)]): 32768                                                                                                                      1.00   1843.1±2.55µs        ? ?/sec
lexsort_rows([str_opt(16)]): 4096                                                                                                                       1.00    162.3±0.54µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 32768                                                                                                      1.00      3.1±0.00ms        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 4096                                                                                                       1.00    266.1±0.61µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768        1.00     12.5±0.01ms        ? ?/sec    1.00     12.6±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096         1.00   1000.6±1.03µs        ? ?/sec    1.01   1010.8±1.37µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768    1.00     12.1±0.02ms        ? ?/sec    1.01     12.2±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096     1.00   1036.6±1.83µs        ? ?/sec    1.01   1043.2±1.29µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                        1.00      3.7±0.01ms        ? ?/sec    1.00      3.7±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                         1.00    450.5±0.85µs        ? ?/sec    1.04    468.0±0.61µs        ? ?/sec
lexsort_to_indices([f64]): 32768                                                                                                                        1.00    597.9±1.01µs        ? ?/sec
lexsort_to_indices([f64]): 4096                                                                                                                         1.00     49.0±0.03µs        ? ?/sec
lexsort_to_indices([f64_opt]): 32768                                                                                                                    1.00    490.3±0.97µs        ? ?/sec
lexsort_to_indices([f64_opt]): 4096                                                                                                                     1.00     41.5±0.03µs        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                       1.00    163.7±1.27ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                         1.00      4.0±0.00ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                          1.00    410.6±1.84µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576                                                                                               1.00    187.6±4.70ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768                                                                                                 1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 4096                                                                                                  1.00    235.1±0.62µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 32768                                                              1.00      2.7±0.00ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 4096                                                               1.00    239.4±0.51µs        ? ?/sec    1.01    241.4±0.45µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 32768                                                                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 4096                                                                         1.01    239.3±1.12µs        ? ?/sec    1.00    236.2±0.63µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 32768                                                                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, str(16)]): 4096                                                                         1.01    239.0±0.80µs        ? ?/sec    1.00    236.4±0.65µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 32768                                                                    1.00      2.7±0.00ms        ? ?/sec    1.01      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 4096                                                                     1.01    239.4±0.67µs        ? ?/sec    1.00    237.5±0.55µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 32768                                                                1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 4096                                                                 1.01    239.2±0.85µs        ? ?/sec    1.00    236.8±0.83µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 32768                                                                    1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 4096                                                                     1.01    239.8±0.86µs        ? ?/sec    1.00    236.4±0.82µs        ? ?/sec
lexsort_to_indices([i32]): 32768                                                                                                                        1.00    447.4±0.45µs        ? ?/sec
lexsort_to_indices([i32]): 4096                                                                                                                         1.00     44.2±0.04µs        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 32768                                                               1.00      5.7±0.00ms        ? ?/sec    1.00      5.7±0.00ms        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 4096                                                                1.00    515.7±1.09µs        ? ?/sec    1.02    526.1±0.64µs        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 32768                                                      1.00      3.5±0.00ms        ? ?/sec    1.00      3.5±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 4096                                                       1.00    329.8±0.50µs        ? ?/sec    1.05    347.3±0.49µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 32768                                                                   1.00      3.6±0.00ms        ? ?/sec    1.00      3.6±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 4096                                                                    1.00    304.6±0.63µs        ? ?/sec    1.04    317.6±0.38µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                  1.00      4.0±0.00ms        ? ?/sec    1.00      4.1±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                   1.00    348.4±0.64µs        ? ?/sec    1.04    361.4±0.75µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 32768                                                               1.00      3.8±0.00ms        ? ?/sec    1.00      3.8±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 4096                                                                1.00    327.7±0.62µs        ? ?/sec    1.03    337.5±0.69µs        ? ?/sec
lexsort_to_indices([i32_opt]): 32768                                                                                                                    1.00    375.7±0.33µs        ? ?/sec
lexsort_to_indices([i32_opt]): 4096                                                                                                                     1.00     37.7±0.03µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768                                                                                                          1.00      3.6±0.00ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 4096                                                                                                           1.00    277.6±1.14µs        ? ?/sec
lexsort_to_indices([i64]): 32768                                                                                                                        1.00    465.6±0.55µs        ? ?/sec
lexsort_to_indices([i64]): 4096                                                                                                                         1.00     43.0±0.02µs        ? ?/sec
lexsort_to_indices([i64_opt]): 32768                                                                                                                    1.00    390.7±0.80µs        ? ?/sec
lexsort_to_indices([i64_opt]): 4096                                                                                                                     1.00     37.2±0.02µs        ? ?/sec
lexsort_to_indices([str(16)]): 32768                                                                                                                    1.00    566.0±0.74µs        ? ?/sec
lexsort_to_indices([str(16)]): 4096                                                                                                                     1.00     52.3±0.18µs        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 32768                                                                    1.00      7.8±0.02ms        ? ?/sec    1.02      7.9±0.03ms        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 4096                                                                     1.00    593.6±0.70µs        ? ?/sec    1.01    596.9±0.72µs        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 32768                                                                1.00      8.6±0.02ms        ? ?/sec    1.02      8.8±0.04ms        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 4096                                                                 1.01    682.5±2.37µs        ? ?/sec    1.00    676.2±0.87µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                         1.00      5.4±0.01ms        ? ?/sec    1.00      5.4±0.00ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                          1.00    459.9±0.77µs        ? ?/sec    1.03    472.3±0.47µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768                                                                1.00      5.3±0.00ms        ? ?/sec    1.01      5.3±0.00ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 4096                                                                 1.02    463.6±0.51µs        ? ?/sec    1.00    453.2±0.50µs        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 32768                                                   1.00      5.5±0.00ms        ? ?/sec    1.01      5.6±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 4096                                                    1.02    483.9±0.87µs        ? ?/sec    1.00    476.4±1.16µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 32768                                                                                                                1.00    470.0±0.86µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 4096                                                                                                                 1.00     44.4±0.15µs        ? ?/sec

Per-runner information
lexsort — shard 1/1

Node: gk3-benchmark-cluster-nap-mmrqzil7-d086d2ea-4wb4

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

uname:

Linux bench-c6836375961-4848-bfqx4 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench lexsort
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 790.2s
Peak memory 57.8 MiB
Avg memory 19.7 MiB
CPU user 783.6s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 2710.6s
Peak memory 81.9 MiB
Avg memory 20.4 MiB
CPU user 2691.9s
CPU sys 14.5s
Peak spill 0 B

File an issue against this benchmark runner

@mbutrovich

Copy link
Copy Markdown
Contributor Author

run benchmark lexsort

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: lexsort

Sharding factor: 1 (1 workers).

Comparing radix_row_sort (03ee81c) to 4e04fea (merge-base) diff

Run configuration
run benchmark lexsort
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@mbutrovich

Copy link
Copy Markdown
Contributor Author

run benchmark lexsort

env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6

@mbutrovich

Copy link
Copy Markdown
Contributor Author

run benchmark lexsort

resources:
  arch: amd64

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: lexsort

Sharding factor: 1 (1 workers).

Comparing radix_row_sort (03ee81c) to 4e04fea (merge-base) diff

Run configuration
run benchmark lexsort
env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: lexsort

Sharding factor: 1 (1 workers).

Comparing radix_row_sort (03ee81c) to 4e04fea (merge-base) diff

Run configuration
run benchmark lexsort
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@mbutrovich

Copy link
Copy Markdown
Contributor Author

run benchmark lexsort

env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
  arch: amd64

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark starting (GKE) | trigger

Target: lexsort

Sharding factor: 1 (1 workers).

Comparing radix_row_sort (03ee81c) to 4e04fea (merge-base) diff

Run configuration
run benchmark lexsort
env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
  arch: amd64
shards: 1

Results will be posted when all workers finish.


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: lexsort

Comparing radix_row_sort (03ee81c) to 4e04fea (merge-base) diff

Run configuration
run benchmark lexsort
resources:
  arch: amd64
shards: 1
Details
group                                                                                                            base                                   changed
-----                                                                                                            ----                                   -------
encode([decimal128(18,2), i32]): 32768                                                                                                                  1.00    284.0±7.67µs        ? ?/sec
encode([decimal128(18,2), i32]): 4096                                                                                                                   1.00     36.2±0.51µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                           1.00  1626.0±30.49µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                            1.00    118.5±5.87µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                       1.00  1888.6±41.22µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                        1.00    144.2±6.16µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                           1.00   712.0±10.50µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                            1.00     67.1±3.07µs        ? ?/sec
encode([f64]): 32768                                                                                                                                    1.00     60.1±2.58µs        ? ?/sec
encode([f64]): 4096                                                                                                                                     1.00      7.8±0.15µs        ? ?/sec
encode([f64_opt]): 32768                                                                                                                                1.00    129.8±5.88µs        ? ?/sec
encode([f64_opt]): 4096                                                                                                                                 1.00     10.8±0.41µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                                   1.00      5.2±0.17ms        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                                     1.00    140.5±3.88µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                      1.00     17.2±0.96µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                           1.00      3.9±0.09ms        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 32768                                                                                                             1.00    103.9±1.03µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 4096                                                                                                              1.00     12.6±0.61µs        ? ?/sec
encode([i32, i32_list, str(16)]): 32768                                                                                                                 1.00  1390.1±33.98µs        ? ?/sec
encode([i32, i32_list, str(16)]): 4096                                                                                                                  1.00    141.5±3.82µs        ? ?/sec
encode([i32, i32_opt]): 32768                                                                                                                           1.00    137.8±5.93µs        ? ?/sec
encode([i32, i32_opt]): 4096                                                                                                                            1.00     12.3±0.15µs        ? ?/sec
encode([i32, str(16)]): 32768                                                                                                                           1.00   215.5±10.57µs        ? ?/sec
encode([i32, str(16)]): 4096                                                                                                                            1.00     27.5±1.33µs        ? ?/sec
encode([i32, str_list(4)]): 32768                                                                                                                       1.00      4.9±0.15ms        ? ?/sec
encode([i32, str_list(4)]): 4096                                                                                                                        1.00   574.6±18.23µs        ? ?/sec
encode([i32, str_list_opt(4)]): 32768                                                                                                                   1.00      4.9±0.14ms        ? ?/sec
encode([i32, str_list_opt(4)]): 4096                                                                                                                    1.00   579.5±16.72µs        ? ?/sec
encode([i32, str_opt(16)]): 32768                                                                                                                       1.00   391.9±16.80µs        ? ?/sec
encode([i32, str_opt(16)]): 4096                                                                                                                        1.00     39.5±0.46µs        ? ?/sec
encode([i32]): 32768                                                                                                                                    1.00     47.6±1.16µs        ? ?/sec
encode([i32]): 4096                                                                                                                                     1.00      5.5±0.21µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 32768                                                                                                                  1.00  1334.3±64.95µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 4096                                                                                                                   1.00    123.3±5.41µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                         1.00   394.2±15.21µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                          1.00     42.4±1.59µs        ? ?/sec
encode([i32_opt, i32_list]): 32768                                                                                                                      1.00  1165.0±48.02µs        ? ?/sec
encode([i32_opt, i32_list]): 4096                                                                                                                       1.00    115.3±4.05µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                                     1.00  1808.1±68.41µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                                      1.00    176.4±9.87µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 32768                                                                                                                  1.00  1341.2±43.45µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 4096                                                                                                                   1.00    126.0±4.75µs        ? ?/sec
encode([i32_opt]): 32768                                                                                                                                1.00    102.7±1.64µs        ? ?/sec
encode([i32_opt]): 4096                                                                                                                                 1.00      7.5±0.18µs        ? ?/sec
encode([i64(0..1000), i32]): 32768                                                                                                                      1.00    101.1±3.62µs        ? ?/sec
encode([i64(0..1000), i32]): 4096                                                                                                                       1.00     12.6±0.57µs        ? ?/sec
encode([i64]): 32768                                                                                                                                    1.00     55.4±2.27µs        ? ?/sec
encode([i64]): 4096                                                                                                                                     1.00      6.8±0.17µs        ? ?/sec
encode([i64_opt]): 32768                                                                                                                                1.00    104.0±2.82µs        ? ?/sec
encode([i64_opt]): 4096                                                                                                                                 1.00      7.5±0.19µs        ? ?/sec
encode([str(16)]): 32768                                                                                                                                1.00    175.1±4.47µs        ? ?/sec
encode([str(16)]): 4096                                                                                                                                 1.00     20.9±0.93µs        ? ?/sec
encode([str_list(4), i32]): 32768                                                                                                                       1.00      5.0±0.05ms        ? ?/sec
encode([str_list(4), i32]): 4096                                                                                                                        1.00   598.5±10.06µs        ? ?/sec
encode([str_list_opt(4), i32]): 32768                                                                                                                   1.00      5.0±0.05ms        ? ?/sec
encode([str_list_opt(4), i32]): 4096                                                                                                                    1.00   572.3±20.99µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                            1.00  1549.5±55.13µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                             1.00    144.0±4.97µs        ? ?/sec
encode([str_opt(16), str(16)]): 32768                                                                                                                   1.00   515.7±16.47µs        ? ?/sec
encode([str_opt(16), str(16)]): 4096                                                                                                                    1.00     51.9±2.37µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 32768                                                                                                      1.00  1005.2±40.78µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                       1.00     98.4±3.80µs        ? ?/sec
encode([str_opt(16)]): 32768                                                                                                                            1.00    346.3±9.38µs        ? ?/sec
encode([str_opt(16)]): 4096                                                                                                                             1.00     33.0±1.12µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 32768                                                                                                           1.00   940.2±13.28µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 4096                                                                                                            1.00    100.7±7.77µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                    1.00      3.8±0.17ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                     1.00   293.8±15.08µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                1.00      4.1±0.14ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                 1.00   343.3±14.38µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                    1.00      2.0±0.07ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                     1.00    193.0±7.47µs        ? ?/sec
lexsort_radix([f64]): 32768                                                                                                                             1.00   783.1±10.58µs        ? ?/sec
lexsort_radix([f64]): 4096                                                                                                                              1.00     55.6±1.15µs        ? ?/sec
lexsort_radix([f64_opt]): 32768                                                                                                                         1.00   836.6±34.70µs        ? ?/sec
lexsort_radix([f64_opt]): 4096                                                                                                                          1.00     88.1±2.95µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                            1.00     39.7±1.39ms        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                              1.00   734.8±31.02µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                               1.00    118.9±6.71µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                    1.00     42.0±1.45ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 100                                                                                          1.00     22.8±0.82ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 1000                                                                                         1.00     22.8±0.52ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 104857                                                                                       1.00     24.3±0.57ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768                                                                                                      1.00  1012.1±47.28µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 100                                                                                            1.00    315.2±7.71µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 1000                                                                                           1.00   317.2±12.59µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 3276                                                                                           1.00   357.2±15.83µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 4096                                                                                                       1.00     54.0±2.58µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 32768                                                                                                          1.00  1859.3±57.57µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 4096                                                                                                           1.00    213.2±8.56µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 32768                                                                                                                    1.00   568.4±15.74µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 4096                                                                                                                     1.00     49.5±1.46µs        ? ?/sec
lexsort_radix([i32, str(16)]): 32768                                                                                                                    1.00   701.5±27.64µs        ? ?/sec
lexsort_radix([i32, str(16)]): 4096                                                                                                                     1.00     73.8±2.88µs        ? ?/sec
lexsort_radix([i32, str_list(4)]): 32768                                                                                                                1.00      5.5±0.19ms        ? ?/sec
lexsort_radix([i32, str_list(4)]): 4096                                                                                                                 1.00   655.9±29.13µs        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 32768                                                                                                            1.00      5.7±0.11ms        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 4096                                                                                                             1.00   662.7±25.12µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 32768                                                                                                                1.00   896.7±30.09µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 4096                                                                                                                 1.00     99.1±4.39µs        ? ?/sec
lexsort_radix([i32]): 32768                                                                                                                             1.00   448.0±13.01µs        ? ?/sec
lexsort_radix([i32]): 4096                                                                                                                              1.00     43.8±2.06µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 32768                                                                                                           1.00      2.2±0.10ms        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 4096                                                                                                            1.00   233.2±11.36µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                  1.00  1325.7±55.13µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                   1.00    117.2±6.03µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 32768                                                                                                               1.00      2.0±0.08ms        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 4096                                                                                                                1.00    205.6±5.39µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                              1.00      2.8±0.07ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                               1.00    280.7±9.09µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 32768                                                                                                           1.00      2.1±0.09ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 4096                                                                                                            1.00    219.2±8.49µs        ? ?/sec
lexsort_radix([i32_opt]): 32768                                                                                                                         1.00   878.9±15.95µs        ? ?/sec
lexsort_radix([i32_opt]): 4096                                                                                                                          1.00     62.7±1.96µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 100                                                                                                   1.00     23.5±0.80ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 1000                                                                                                  1.00     23.9±0.52ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 104857                                                                                                1.00     25.6±0.63ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768                                                                                                               1.00  1047.5±25.69µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 100                                                                                                     1.00    344.9±9.24µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 1000                                                                                                    1.00   352.8±16.57µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 3276                                                                                                    1.00   390.5±15.77µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 4096                                                                                                                1.00     59.1±1.46µs        ? ?/sec
lexsort_radix([i64]): 32768                                                                                                                             1.00   460.4±16.24µs        ? ?/sec
lexsort_radix([i64]): 4096                                                                                                                              1.00     44.3±2.08µs        ? ?/sec
lexsort_radix([i64_opt]): 32768                                                                                                                         1.00   865.2±27.42µs        ? ?/sec
lexsort_radix([i64_opt]): 4096                                                                                                                          1.00     67.4±5.45µs        ? ?/sec
lexsort_radix([str(16)]): 32768                                                                                                                         1.00   780.0±24.63µs        ? ?/sec
lexsort_radix([str(16)]): 4096                                                                                                                          1.00     78.1±3.09µs        ? ?/sec
lexsort_radix([str_list(4), i32]): 32768                                                                                                                1.00      6.0±0.15ms        ? ?/sec
lexsort_radix([str_list(4), i32]): 4096                                                                                                                 1.00   701.6±26.04µs        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 32768                                                                                                            1.00      6.0±0.17ms        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 4096                                                                                                             1.00   691.1±27.09µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                     1.00      2.4±0.08ms        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                      1.00    247.4±7.14µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 100                                                                                                1.00     45.8±1.76ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 1000                                                                                               1.00     46.3±1.64ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 104857                                                                                             1.00     48.6±1.59ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768                                                                                                            1.00  1300.0±50.13µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 100                                                                                                  1.00   774.1±14.14µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 1000                                                                                                 1.00   749.2±33.78µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 3276                                                                                                 1.00   793.7±33.18µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 4096                                                                                                             1.00    136.9±7.00µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 32768                                                                                               1.00  1823.0±73.22µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                1.00    203.4±6.52µs        ? ?/sec
lexsort_radix([str_opt(16)]): 32768                                                                                                                     1.00  1129.0±36.57µs        ? ?/sec
lexsort_radix([str_opt(16)]): 4096                                                                                                                      1.00    125.9±4.17µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 32768                                                                                                            1.00      2.3±0.06ms        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 4096                                                                                                             1.00    219.1±5.58µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768              1.00      5.7±0.18ms        ? ?/sec    1.02      5.9±0.19ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096               1.00   482.5±22.32µs        ? ?/sec    1.01   488.5±18.61µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768          1.00      6.5±0.24ms        ? ?/sec    1.03      6.7±0.19ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096           1.00   552.3±23.65µs        ? ?/sec    1.06   587.7±17.94µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                              1.00      2.5±0.08ms        ? ?/sec    1.02      2.6±0.07ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                               1.00    245.3±9.82µs        ? ?/sec    1.04   255.0±12.30µs        ? ?/sec
lexsort_rows([f64]): 32768                                                                                                                              1.00      2.0±0.04ms        ? ?/sec
lexsort_rows([f64]): 4096                                                                                                                               1.00    192.7±8.02µs        ? ?/sec
lexsort_rows([f64_opt]): 32768                                                                                                                          1.00  1792.8±92.06µs        ? ?/sec
lexsort_rows([f64_opt]): 4096                                                                                                                           1.00    168.1±4.47µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                             1.00     78.4±3.06ms        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                               1.00  1869.4±72.98µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                1.00    213.4±7.25µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                     1.00    104.4±3.70ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 32768                                                                                                       1.00      2.1±0.06ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 4096                                                                                                        1.00    194.3±8.13µs        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 32768                                                                    1.00      4.2±0.17ms        ? ?/sec    1.01      4.2±0.16ms        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 4096                                                                     1.00   415.3±15.41µs        ? ?/sec    1.03   428.4±13.35µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 32768                                                                              1.00      2.1±0.09ms        ? ?/sec    1.00      2.1±0.06ms        ? ?/sec
lexsort_rows([i32, i32_opt]): 4096                                                                               1.00    189.7±8.21µs        ? ?/sec    1.02    193.8±4.76µs        ? ?/sec
lexsort_rows([i32, str(16)]): 32768                                                                              1.00      2.2±0.10ms        ? ?/sec    1.00      2.2±0.06ms        ? ?/sec
lexsort_rows([i32, str(16)]): 4096                                                                               1.00    207.1±9.45µs        ? ?/sec    1.00    207.8±5.29µs        ? ?/sec
lexsort_rows([i32, str_list(4)]): 32768                                                                          1.00      7.8±0.32ms        ? ?/sec    1.03      8.1±0.14ms        ? ?/sec
lexsort_rows([i32, str_list(4)]): 4096                                                                           1.00   875.8±34.69µs        ? ?/sec    1.01   881.7±31.79µs        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 32768                                                                      1.00      8.0±0.24ms        ? ?/sec    1.03      8.3±0.18ms        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 4096                                                                       1.00   882.9±31.36µs        ? ?/sec    1.04   914.7±24.04µs        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 32768                                                                          1.00      2.4±0.09ms        ? ?/sec    1.01      2.4±0.11ms        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 4096                                                                           1.00   219.6±11.60µs        ? ?/sec    1.03   226.9±11.40µs        ? ?/sec
lexsort_rows([i32]): 32768                                                                                                                              1.00  1966.6±72.46µs        ? ?/sec
lexsort_rows([i32]): 4096                                                                                                                               1.00    188.7±6.85µs        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 32768                                                                     1.00      4.0±0.18ms        ? ?/sec    1.07      4.2±0.12ms        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 4096                                                                      1.03   404.6±16.14µs        ? ?/sec    1.00   392.7±16.52µs        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 32768                                                            1.04      2.8±0.11ms        ? ?/sec    1.00      2.7±0.12ms        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 4096                                                             1.01   281.7±10.08µs        ? ?/sec    1.00    277.8±9.02µs        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 32768                                                                         1.00      3.7±0.18ms        ? ?/sec    1.06      3.9±0.17ms        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 4096                                                                          1.00   394.7±17.59µs        ? ?/sec    1.03   404.8±13.22µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                        1.00      4.4±0.14ms        ? ?/sec    1.03      4.6±0.13ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                         1.02   445.1±24.57µs        ? ?/sec    1.00   436.6±16.15µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 32768                                                                     1.02      4.1±0.14ms        ? ?/sec    1.00      4.0±0.18ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 4096                                                                      1.00   408.7±20.68µs        ? ?/sec    1.03   422.8±15.29µs        ? ?/sec
lexsort_rows([i32_opt]): 32768                                                                                                                          1.00  1809.6±55.56µs        ? ?/sec
lexsort_rows([i32_opt]): 4096                                                                                                                           1.00    158.5±3.65µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 32768                                                                                                                1.00      2.1±0.03ms        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 4096                                                                                                                 1.00    193.1±5.58µs        ? ?/sec
lexsort_rows([i64]): 32768                                                                                                                              1.00  1999.6±63.61µs        ? ?/sec
lexsort_rows([i64]): 4096                                                                                                                               1.00    185.3±7.60µs        ? ?/sec
lexsort_rows([i64_opt]): 32768                                                                                                                          1.00  1859.6±35.51µs        ? ?/sec
lexsort_rows([i64_opt]): 4096                                                                                                                           1.00    161.3±5.10µs        ? ?/sec
lexsort_rows([str(16)]): 32768                                                                                                                          1.00      2.2±0.08ms        ? ?/sec
lexsort_rows([str(16)]): 4096                                                                                                                           1.00    199.8±9.88µs        ? ?/sec
lexsort_rows([str_list(4), i32]): 32768                                                                          1.00      7.3±0.17ms        ? ?/sec    1.02      7.5±0.18ms        ? ?/sec
lexsort_rows([str_list(4), i32]): 4096                                                                           1.00   812.8±31.98µs        ? ?/sec    1.01   821.1±26.55µs        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 32768                                                                      1.00      7.2±0.25ms        ? ?/sec    1.03      7.4±0.15ms        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 4096                                                                       1.00   781.3±37.95µs        ? ?/sec    1.06   829.3±33.79µs        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                               1.00      3.8±0.13ms        ? ?/sec    1.02      3.8±0.13ms        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                1.00   345.0±15.57µs        ? ?/sec    1.05   363.6±14.36µs        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 32768                                                                      1.01      2.6±0.10ms        ? ?/sec    1.00      2.6±0.10ms        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 4096                                                                       1.03   265.4±12.37µs        ? ?/sec    1.00   258.4±10.66µs        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 32768                                                         1.00      3.1±0.13ms        ? ?/sec    1.04      3.2±0.09ms        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 4096                                                          1.00   314.9±10.04µs        ? ?/sec    1.01    318.0±9.82µs        ? ?/sec
lexsort_rows([str_opt(16)]): 32768                                                                                                                      1.00      2.2±0.04ms        ? ?/sec
lexsort_rows([str_opt(16)]): 4096                                                                                                                       1.00    200.4±4.45µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 32768                                                                                                      1.00  1703.4±25.44µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 4096                                                                                                       1.00    162.7±4.13µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768        1.00      9.0±0.38ms        ? ?/sec    1.01      9.1±0.49ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096         1.00   807.9±29.35µs        ? ?/sec    1.00   807.5±28.97µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768    1.00      8.9±0.44ms        ? ?/sec    1.04      9.2±0.35ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096     1.02   887.0±35.43µs        ? ?/sec    1.00   869.2±31.35µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                        1.00      2.7±0.12ms        ? ?/sec    1.05      2.9±0.12ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                         1.00   346.2±17.60µs        ? ?/sec    1.05   363.3±15.80µs        ? ?/sec
lexsort_to_indices([f64]): 32768                                                                                                                        1.00   822.8±13.97µs        ? ?/sec
lexsort_to_indices([f64]): 4096                                                                                                                         1.00     62.5±1.21µs        ? ?/sec
lexsort_to_indices([f64_opt]): 32768                                                                                                                    1.00   677.6±14.26µs        ? ?/sec
lexsort_to_indices([f64_opt]): 4096                                                                                                                     1.00     52.4±2.06µs        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                       1.00    133.1±2.99ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                         1.00      3.8±0.07ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                          1.00   408.2±17.48µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576                                                                                               1.00    104.0±4.08ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 100                                                                                     1.00      2.3±0.12ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 1000                                                                                    1.00      3.2±0.14ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 104857                                                                                  1.00     72.6±2.55ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768                                                                                                 1.00  1665.4±51.15µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 100                                                                                       1.00    102.8±3.71µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 1000                                                                                      1.00   467.6±17.91µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 3276                                                                                      1.00  1196.4±48.80µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 4096                                                                                                  1.00    159.2±5.16µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 32768                                                              1.04  1661.9±53.45µs        ? ?/sec    1.00  1597.9±39.86µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 4096                                                               1.04    162.3±6.70µs        ? ?/sec    1.00    155.7±6.51µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 32768                                                                        1.00  1586.6±71.17µs        ? ?/sec    1.01  1604.9±42.02µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 4096                                                                         1.00    153.8±7.56µs        ? ?/sec    1.04    160.2±3.86µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 32768                                                                        1.00  1568.8±67.35µs        ? ?/sec    1.02  1595.2±53.90µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 4096                                                                         1.00    159.2±5.78µs        ? ?/sec    1.00    159.2±4.65µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 32768                                                                    1.00  1578.6±60.78µs        ? ?/sec    1.03  1618.1±41.15µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 4096                                                                     1.00    152.0±6.35µs        ? ?/sec    1.06    161.1±2.80µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 32768                                                                1.00  1603.5±45.45µs        ? ?/sec    1.01  1615.2±58.98µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 4096                                                                 1.02    159.4±4.85µs        ? ?/sec    1.00    156.9±6.09µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 32768                                                                    1.00  1542.6±73.41µs        ? ?/sec    1.00  1545.4±73.91µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 4096                                                                     1.03    158.4±5.70µs        ? ?/sec    1.00    153.2±6.41µs        ? ?/sec
lexsort_to_indices([i32]): 32768                                                                                                                        1.00   498.6±18.45µs        ? ?/sec
lexsort_to_indices([i32]): 4096                                                                                                                         1.00     41.3±1.68µs        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 32768                                                               1.00      4.5±0.18ms        ? ?/sec    1.03      4.6±0.16ms        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 4096                                                                1.01   438.5±18.61µs        ? ?/sec    1.00   432.2±18.00µs        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 32768                                                      1.00      2.5±0.10ms        ? ?/sec    1.01      2.5±0.10ms        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 4096                                                       1.03    259.2±5.66µs        ? ?/sec    1.00   251.2±15.94µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 32768                                                                   1.00      2.4±0.10ms        ? ?/sec    1.04      2.5±0.15ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 4096                                                                    1.00    229.7±9.52µs        ? ?/sec    1.03    237.1±9.90µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                  1.00      3.0±0.12ms        ? ?/sec    1.01      3.0±0.15ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                   1.00   277.1±12.90µs        ? ?/sec    1.00   276.8±11.03µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 32768                                                               1.00      2.8±0.09ms        ? ?/sec    1.02      2.8±0.08ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 4096                                                                1.00   242.8±11.33µs        ? ?/sec    1.01   245.5±13.27µs        ? ?/sec
lexsort_to_indices([i32_opt]): 32768                                                                                                                    1.00   430.2±13.82µs        ? ?/sec
lexsort_to_indices([i32_opt]): 4096                                                                                                                     1.00     36.7±1.19µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 100                                                                                              1.00      2.3±0.09ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 1000                                                                                             1.00      3.4±0.12ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 104857                                                                                           1.00     87.8±1.12ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768                                                                                                          1.00      2.6±0.03ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 100                                                                                                1.00    102.2±4.84µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 1000                                                                                               1.00   593.6±15.25µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 3276                                                                                               1.00  1473.4±64.45µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 4096                                                                                                           1.00    186.7±7.10µs        ? ?/sec
lexsort_to_indices([i64]): 32768                                                                                                                        1.00   697.0±18.90µs        ? ?/sec
lexsort_to_indices([i64]): 4096                                                                                                                         1.00     46.3±1.71µs        ? ?/sec
lexsort_to_indices([i64_opt]): 32768                                                                                                                    1.00   565.1±19.71µs        ? ?/sec
lexsort_to_indices([i64_opt]): 4096                                                                                                                     1.00     41.8±1.11µs        ? ?/sec
lexsort_to_indices([str(16)]): 32768                                                                                                                    1.00   653.3±22.47µs        ? ?/sec
lexsort_to_indices([str(16)]): 4096                                                                                                                     1.00     52.0±1.68µs        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 32768                                                                    1.00      5.9±0.28ms        ? ?/sec    1.02      6.0±0.16ms        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 4096                                                                     1.00   495.3±16.13µs        ? ?/sec    1.00   496.4±16.54µs        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 32768                                                                1.00      7.1±0.27ms        ? ?/sec    1.02      7.3±0.23ms        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 4096                                                                 1.00   616.8±26.55µs        ? ?/sec    1.04   642.8±15.19µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                         1.00      3.9±0.18ms        ? ?/sec    1.05      4.0±0.14ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                          1.00   370.3±17.00µs        ? ?/sec    1.01   373.9±17.56µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 100                                                                                           1.00      6.8±0.32ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 1000                                                                                          1.00      8.4±0.33ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 104857                                                                                        1.00    167.4±3.98ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768                                                                1.00      4.0±0.14ms        ? ?/sec    1.00      4.1±0.09ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 100                                                                                             1.00    282.1±9.28µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 1000                                                                                            1.00  1024.1±50.45µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 3276                                                                                            1.00      2.5±0.09ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 4096                                                                 1.03   366.1±18.30µs        ? ?/sec    1.00   356.1±18.59µs        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 32768                                                   1.00      4.1±0.17ms        ? ?/sec    1.01      4.1±0.14ms        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 4096                                                    1.01   408.4±12.11µs        ? ?/sec    1.00   402.7±15.98µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 32768                                                                                                                1.00   548.5±17.34µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 4096                                                                                                                 1.00     45.0±1.32µs        ? ?/sec

Per-runner information
lexsort — shard 1/1

Node: gk3-benchmark-cluster-nap-1kxm755f-e4e6be63-5zv5

Instance: c4-highmem-16 (12 vCPU / 65 GiB)

uname:

Linux bench-c6841996567-4878-h2cvm 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench lexsort
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 795.2s
Peak memory 57.7 MiB
Avg memory 19.9 MiB
CPU user 789.4s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 3100.7s
Peak memory 121.8 MiB
Avg memory 22.5 MiB
CPU user 3034.1s
CPU sys 60.4s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: lexsort

Comparing radix_row_sort (03ee81c) to 4e04fea (merge-base) diff

Run configuration
run benchmark lexsort
shards: 1
Details
group                                                                                                            base                                   changed
-----                                                                                                            ----                                   -------
encode([decimal128(18,2), i32]): 32768                                                                                                                  1.00    225.7±0.16µs        ? ?/sec
encode([decimal128(18,2), i32]): 4096                                                                                                                   1.00     28.5±0.02µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                           1.00  1209.0±19.88µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                            1.00    118.6±1.48µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                       1.00  1461.6±22.99µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                        1.00    129.0±0.63µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                           1.00    571.3±2.98µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                            1.00     63.5±0.06µs        ? ?/sec
encode([f64]): 32768                                                                                                                                    1.00     38.3±0.07µs        ? ?/sec
encode([f64]): 4096                                                                                                                                     1.00      5.1±0.02µs        ? ?/sec
encode([f64_opt]): 32768                                                                                                                                1.00     69.6±0.24µs        ? ?/sec
encode([f64_opt]): 4096                                                                                                                                 1.00      6.1±0.01µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                                   1.00      4.2±0.43ms        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                                     1.00     93.0±0.11µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                      1.00     12.0±0.01µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                           1.00      2.9±0.25ms        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 32768                                                                                                             1.00     65.1±0.06µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 4096                                                                                                              1.00      9.0±0.73µs        ? ?/sec
encode([i32, i32_list, str(16)]): 32768                                                                                                                 1.00  1089.3±10.35µs        ? ?/sec
encode([i32, i32_list, str(16)]): 4096                                                                                                                  1.00    116.6±1.63µs        ? ?/sec
encode([i32, i32_opt]): 32768                                                                                                                           1.00     91.6±0.74µs        ? ?/sec
encode([i32, i32_opt]): 4096                                                                                                                            1.00      9.0±0.03µs        ? ?/sec
encode([i32, str(16)]): 32768                                                                                                                           1.00   223.5±14.08µs        ? ?/sec
encode([i32, str(16)]): 4096                                                                                                                            1.00     28.1±1.81µs        ? ?/sec
encode([i32, str_list(4)]): 32768                                                                                                                       1.00      4.7±0.32ms        ? ?/sec
encode([i32, str_list(4)]): 4096                                                                                                                        1.00    341.3±2.54µs        ? ?/sec
encode([i32, str_list_opt(4)]): 32768                                                                                                                   1.00      3.6±0.31ms        ? ?/sec
encode([i32, str_list_opt(4)]): 4096                                                                                                                    1.00    330.9±2.04µs        ? ?/sec
encode([i32, str_opt(16)]): 32768                                                                                                                       1.00    298.0±2.04µs        ? ?/sec
encode([i32, str_opt(16)]): 4096                                                                                                                        1.00     29.0±0.49µs        ? ?/sec
encode([i32]): 32768                                                                                                                                    1.00     34.5±1.80µs        ? ?/sec
encode([i32]): 4096                                                                                                                                     1.00      4.5±0.01µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 32768                                                                                                                  1.00   1037.2±2.83µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 4096                                                                                                                   1.00     96.9±0.33µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                         1.00    334.9±1.42µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                          1.00     37.1±0.04µs        ? ?/sec
encode([i32_opt, i32_list]): 32768                                                                                                                      1.00    944.4±2.37µs        ? ?/sec
encode([i32_opt, i32_list]): 4096                                                                                                                       1.00     95.4±0.15µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                                     1.00   1380.1±2.67µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                                      1.00    129.8±0.37µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 32768                                                                                                                  1.00   1042.8±4.01µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 4096                                                                                                                   1.00     96.8±0.42µs        ? ?/sec
encode([i32_opt]): 32768                                                                                                                                1.00     64.4±0.19µs        ? ?/sec
encode([i32_opt]): 4096                                                                                                                                 1.00      5.7±0.01µs        ? ?/sec
encode([i64(0..1000), i32]): 32768                                                                                                                      1.00     65.0±0.08µs        ? ?/sec
encode([i64(0..1000), i32]): 4096                                                                                                                       1.00      8.4±0.18µs        ? ?/sec
encode([i64]): 32768                                                                                                                                    1.00     34.9±0.07µs        ? ?/sec
encode([i64]): 4096                                                                                                                                     1.00      4.6±0.01µs        ? ?/sec
encode([i64_opt]): 32768                                                                                                                                1.00     66.4±0.22µs        ? ?/sec
encode([i64_opt]): 4096                                                                                                                                 1.00      5.8±0.02µs        ? ?/sec
encode([str(16)]): 32768                                                                                                                                1.00   187.9±13.32µs        ? ?/sec
encode([str(16)]): 4096                                                                                                                                 1.00     23.6±1.52µs        ? ?/sec
encode([str_list(4), i32]): 32768                                                                                                                       1.00      4.3±0.38ms        ? ?/sec
encode([str_list(4), i32]): 4096                                                                                                                        1.00    341.7±2.74µs        ? ?/sec
encode([str_list_opt(4), i32]): 32768                                                                                                                   1.00      3.9±0.21ms        ? ?/sec
encode([str_list_opt(4), i32]): 4096                                                                                                                    1.00    330.0±1.89µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                            1.00  1177.8±12.57µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                             1.00    114.0±2.85µs        ? ?/sec
encode([str_opt(16), str(16)]): 32768                                                                                                                   1.00   445.7±14.16µs        ? ?/sec
encode([str_opt(16), str(16)]): 4096                                                                                                                    1.00     47.6±2.13µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 32768                                                                                                      1.00    784.8±9.67µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                       1.00     81.9±1.80µs        ? ?/sec
encode([str_opt(16)]): 32768                                                                                                                            1.00    267.1±1.19µs        ? ?/sec
encode([str_opt(16)]): 4096                                                                                                                             1.00     25.1±0.44µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 32768                                                                                                           1.00    701.3±2.11µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 4096                                                                                                            1.00     83.2±0.07µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                    1.00      3.9±0.27ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                     1.00    309.6±1.97µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                1.00      4.1±0.21ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                 1.00    328.4±1.51µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                    1.00  1986.8±38.55µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                     1.00    190.4±0.23µs        ? ?/sec
lexsort_radix([f64]): 32768                                                                                                                             1.00    580.6±2.30µs        ? ?/sec
lexsort_radix([f64]): 4096                                                                                                                              1.00     41.9±0.05µs        ? ?/sec
lexsort_radix([f64_opt]): 32768                                                                                                                         1.00    667.4±1.61µs        ? ?/sec
lexsort_radix([f64_opt]): 4096                                                                                                                          1.00     72.5±0.12µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                            1.00     41.2±1.06ms        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                              1.00    652.1±1.15µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                               1.00    106.8±0.27µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                    1.00     41.0±0.87ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 100                                                                                          1.00     23.4±0.85ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 1000                                                                                         1.00     24.0±0.82ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 104857                                                                                       1.00     25.4±0.92ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768                                                                                                      1.00    741.3±1.53µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 100                                                                                            1.00    239.0±0.84µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 1000                                                                                           1.00    249.0±0.57µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 3276                                                                                           1.00    278.4±1.75µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 4096                                                                                                       1.00     42.3±0.51µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 32768                                                                                                          1.00   1514.8±8.23µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 4096                                                                                                           1.00    157.4±1.23µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 32768                                                                                                                    1.00    419.3±1.79µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 4096                                                                                                                     1.00     39.2±0.09µs        ? ?/sec
lexsort_radix([i32, str(16)]): 32768                                                                                                                    1.00   631.3±11.39µs        ? ?/sec
lexsort_radix([i32, str(16)]): 4096                                                                                                                     1.00     68.3±1.41µs        ? ?/sec
lexsort_radix([i32, str_list(4)]): 32768                                                                                                                1.00      5.7±0.28ms        ? ?/sec
lexsort_radix([i32, str_list(4)]): 4096                                                                                                                 1.00    420.8±3.69µs        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 32768                                                                                                            1.00      4.3±0.36ms        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 4096                                                                                                             1.00    407.9±2.27µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 32768                                                                                                                1.00    727.0±7.45µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 4096                                                                                                                 1.00     69.0±0.75µs        ? ?/sec
lexsort_radix([i32]): 32768                                                                                                                             1.00    353.6±1.35µs        ? ?/sec
lexsort_radix([i32]): 4096                                                                                                                              1.00     34.1±0.04µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 32768                                                                                                           1.00   1831.2±7.15µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 4096                                                                                                            1.00    180.8±1.23µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                  1.00  1143.9±15.09µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                   1.00    102.5±0.76µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 32768                                                                                                               1.00   1678.4±8.05µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 4096                                                                                                                1.00    155.0±0.96µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                              1.00      2.2±0.01ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                               1.00    207.6±1.04µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 32768                                                                                                           1.00   1794.6±9.04µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 4096                                                                                                            1.00    163.0±1.05µs        ? ?/sec
lexsort_radix([i32_opt]): 32768                                                                                                                         1.00    671.4±1.98µs        ? ?/sec
lexsort_radix([i32_opt]): 4096                                                                                                                          1.00     52.8±0.08µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 100                                                                                                   1.00     25.4±0.59ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 1000                                                                                                  1.00     25.4±0.57ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 104857                                                                                                1.00     25.9±1.00ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768                                                                                                               1.00    783.2±2.29µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 100                                                                                                     1.00    295.9±2.27µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 1000                                                                                                    1.00    303.3±2.01µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 3276                                                                                                    1.00    322.6±2.76µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 4096                                                                                                                1.00     48.5±0.66µs        ? ?/sec
lexsort_radix([i64]): 32768                                                                                                                             1.00    355.7±1.42µs        ? ?/sec
lexsort_radix([i64]): 4096                                                                                                                              1.00     34.5±0.06µs        ? ?/sec
lexsort_radix([i64_opt]): 32768                                                                                                                         1.00    668.3±1.41µs        ? ?/sec
lexsort_radix([i64_opt]): 4096                                                                                                                          1.00     51.3±0.09µs        ? ?/sec
lexsort_radix([str(16)]): 32768                                                                                                                         1.00    660.9±9.90µs        ? ?/sec
lexsort_radix([str(16)]): 4096                                                                                                                          1.00     75.8±1.19µs        ? ?/sec
lexsort_radix([str_list(4), i32]): 32768                                                                                                                1.00      5.7±0.28ms        ? ?/sec
lexsort_radix([str_list(4), i32]): 4096                                                                                                                 1.00    448.5±3.03µs        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 32768                                                                                                            1.00      5.0±0.33ms        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 4096                                                                                                             1.00    441.0±2.19µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                     1.00  1909.6±11.21µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                      1.00    190.8±2.26µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 100                                                                                                1.00     48.5±0.78ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 1000                                                                                               1.00     48.4±0.74ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 104857                                                                                             1.00     49.0±1.05ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768                                                                                                            1.00   1117.8±9.45µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 100                                                                                                  1.00   669.1±13.88µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 1000                                                                                                 1.00   678.4±13.44µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 3276                                                                                                 1.00   707.5±13.27µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 4096                                                                                                             1.00    122.7±1.66µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 32768                                                                                               1.00  1497.8±10.72µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                1.00    162.6±1.64µs        ? ?/sec
lexsort_radix([str_opt(16)]): 32768                                                                                                                     1.00    931.1±7.06µs        ? ?/sec
lexsort_radix([str_opt(16)]): 4096                                                                                                                      1.00    102.0±0.84µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 32768                                                                                                            1.00   1964.7±3.15µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 4096                                                                                                             1.00    180.9±0.77µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768              1.04      7.2±0.17ms        ? ?/sec    1.00      6.9±0.27ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096               1.00    500.0±1.10µs        ? ?/sec    1.00    498.2±1.71µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768          1.04      7.4±0.38ms        ? ?/sec    1.00      7.2±0.31ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096           1.00    555.4±1.89µs        ? ?/sec    1.00    553.4±0.89µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                              1.00      2.6±0.01ms        ? ?/sec    1.01      2.6±0.02ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                               1.00    243.6±0.34µs        ? ?/sec    1.01    244.9±0.35µs        ? ?/sec
lexsort_rows([f64]): 32768                                                                                                                              1.00   1698.5±3.05µs        ? ?/sec
lexsort_rows([f64]): 4096                                                                                                                               1.00    158.4±0.15µs        ? ?/sec
lexsort_rows([f64_opt]): 32768                                                                                                                          1.00   1512.7±2.31µs        ? ?/sec
lexsort_rows([f64_opt]): 4096                                                                                                                           1.00    138.4±0.37µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                             1.00     87.2±4.50ms        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                               1.00   1282.1±2.66µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                1.00    159.1±0.59µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                     1.00    121.0±5.49ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 32768                                                                                                       1.00   1712.5±3.14µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 4096                                                                                                        1.00    163.3±0.50µs        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 32768                                                                    1.00      3.1±0.01ms        ? ?/sec    1.01      3.1±0.02ms        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 4096                                                                     1.00    280.4±0.72µs        ? ?/sec    1.00    281.7±1.83µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 32768                                                                              1.00   1730.6±7.51µs        ? ?/sec    1.02   1768.9±2.77µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 4096                                                                               1.00    160.1±1.05µs        ? ?/sec    1.00    160.7±0.25µs        ? ?/sec
lexsort_rows([i32, str(16)]): 32768                                                                              1.00   1898.6±6.80µs        ? ?/sec    1.01  1914.7±15.74µs        ? ?/sec
lexsort_rows([i32, str(16)]): 4096                                                                               1.00    175.4±1.09µs        ? ?/sec    1.01    177.4±1.94µs        ? ?/sec
lexsort_rows([i32, str_list(4)]): 32768                                                                          1.00      7.7±0.31ms        ? ?/sec    1.00      7.7±0.31ms        ? ?/sec
lexsort_rows([i32, str_list(4)]): 4096                                                                           1.00    596.3±4.25µs        ? ?/sec    1.00    594.7±5.87µs        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 32768                                                                      1.00      6.9±0.36ms        ? ?/sec    1.03      7.1±0.27ms        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 4096                                                                       1.00    581.7±2.44µs        ? ?/sec    1.00    579.6±2.43µs        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 32768                                                                          1.00      2.6±0.01ms        ? ?/sec    1.00      2.6±0.01ms        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 4096                                                                           1.07    243.2±0.84µs        ? ?/sec    1.00    227.2±0.80µs        ? ?/sec
lexsort_rows([i32]): 32768                                                                                                                              1.00   1647.2±4.34µs        ? ?/sec
lexsort_rows([i32]): 4096                                                                                                                               1.00    156.1±0.16µs        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 32768                                                                     1.00      2.9±0.01ms        ? ?/sec    1.01      2.9±0.01ms        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 4096                                                                      1.02    274.0±1.56µs        ? ?/sec    1.00    269.1±0.95µs        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 32768                                                            1.00      2.6±0.01ms        ? ?/sec    1.02      2.6±0.01ms        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 4096                                                             1.06    236.1±1.14µs        ? ?/sec    1.00    222.4±0.40µs        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 32768                                                                         1.01      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 4096                                                                          1.06    314.2±1.42µs        ? ?/sec    1.00    297.7±0.62µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                        1.00      3.7±0.03ms        ? ?/sec    1.00      3.7±0.01ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                         1.00    325.9±1.56µs        ? ?/sec    1.00    326.7±0.89µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 32768                                                                     1.01      3.2±0.01ms        ? ?/sec    1.00      3.2±0.00ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 4096                                                                      1.04    322.0±1.61µs        ? ?/sec    1.00    309.0±0.71µs        ? ?/sec
lexsort_rows([i32_opt]): 32768                                                                                                                          1.00   1455.1±2.36µs        ? ?/sec
lexsort_rows([i32_opt]): 4096                                                                                                                           1.00    130.8±0.23µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 32768                                                                                                                1.00   1710.3±4.63µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 4096                                                                                                                 1.00    162.2±0.20µs        ? ?/sec
lexsort_rows([i64]): 32768                                                                                                                              1.00   1692.7±2.79µs        ? ?/sec
lexsort_rows([i64]): 4096                                                                                                                               1.00    153.5±0.18µs        ? ?/sec
lexsort_rows([i64_opt]): 32768                                                                                                                          1.00   1510.1±2.73µs        ? ?/sec
lexsort_rows([i64_opt]): 4096                                                                                                                           1.00    135.7±0.45µs        ? ?/sec
lexsort_rows([str(16)]): 32768                                                                                                                          1.00  1966.7±15.02µs        ? ?/sec
lexsort_rows([str(16)]): 4096                                                                                                                           1.00    180.5±1.50µs        ? ?/sec
lexsort_rows([str_list(4), i32]): 32768                                                                          1.00      7.1±0.56ms        ? ?/sec    1.01      7.1±0.45ms        ? ?/sec
lexsort_rows([str_list(4), i32]): 4096                                                                           1.00    547.6±3.65µs        ? ?/sec    1.01    554.0±4.96µs        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 32768                                                                      1.00      6.5±0.36ms        ? ?/sec    1.02      6.6±0.28ms        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 4096                                                                       1.01    540.8±3.02µs        ? ?/sec    1.00    537.1±2.57µs        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                               1.00      3.4±0.02ms        ? ?/sec    1.01      3.4±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                1.00    280.2±1.87µs        ? ?/sec    1.02    286.5±2.79µs        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 32768                                                                      1.00      2.3±0.01ms        ? ?/sec    1.00      2.3±0.01ms        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 4096                                                                       1.00    208.4±1.30µs        ? ?/sec    1.02    212.7±2.23µs        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 32768                                                         1.00      3.0±0.02ms        ? ?/sec    1.01      3.0±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 4096                                                          1.00    258.2±1.35µs        ? ?/sec    1.00    258.4±1.99µs        ? ?/sec
lexsort_rows([str_opt(16)]): 32768                                                                                                                      1.00   1836.7±2.83µs        ? ?/sec
lexsort_rows([str_opt(16)]): 4096                                                                                                                       1.00    161.4±0.61µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 32768                                                                                                      1.00      3.1±0.01ms        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 4096                                                                                                       1.00    264.2±0.89µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768        1.00     12.6±0.03ms        ? ?/sec    1.01     12.7±0.05ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096         1.01   1010.8±2.01µs        ? ?/sec    1.00   1005.5±1.49µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768    1.01     12.6±0.17ms        ? ?/sec    1.00     12.5±0.18ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096     1.00   1041.9±1.99µs        ? ?/sec    1.00   1046.2±2.63µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                        1.00      3.7±0.01ms        ? ?/sec    1.00      3.7±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                         1.02    467.6±0.86µs        ? ?/sec    1.00    456.8±1.09µs        ? ?/sec
lexsort_to_indices([f64]): 32768                                                                                                                        1.00    596.4±2.61µs        ? ?/sec
lexsort_to_indices([f64]): 4096                                                                                                                         1.00     48.9±0.04µs        ? ?/sec
lexsort_to_indices([f64_opt]): 32768                                                                                                                    1.00    489.6±1.27µs        ? ?/sec
lexsort_to_indices([f64_opt]): 4096                                                                                                                     1.00     41.4±0.04µs        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                       1.00    180.9±7.02ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                         1.00      4.0±0.00ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                          1.00    415.5±1.09µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576                                                                                               1.00    218.6±5.68ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 100                                                                                     1.00      2.2±0.00ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 1000                                                                                    1.00      2.8±0.01ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 104857                                                                                  1.00     83.7±1.51ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768                                                                                                 1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 100                                                                                       1.00     85.9±0.14µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 1000                                                                                      1.00    353.2±0.73µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 3276                                                                                      1.00    950.5±2.06µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 4096                                                                                                  1.00    235.7±0.69µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 32768                                                              1.00      2.7±0.00ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 4096                                                               1.03    245.6±0.81µs        ? ?/sec    1.00    239.2±0.74µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 32768                                                                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 4096                                                                         1.00    234.9±0.71µs        ? ?/sec    1.02    239.6±1.16µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 32768                                                                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, str(16)]): 4096                                                                         1.00    235.3±0.54µs        ? ?/sec    1.00    235.6±0.74µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 32768                                                                    1.00      2.7±0.00ms        ? ?/sec    1.01      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 4096                                                                     1.00    237.2±0.65µs        ? ?/sec    1.01    238.6±0.56µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 32768                                                                1.00      2.7±0.00ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 4096                                                                 1.00    237.5±0.80µs        ? ?/sec    1.00    238.0±0.87µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 32768                                                                    1.00      2.7±0.00ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 4096                                                                     1.00    236.8±0.96µs        ? ?/sec    1.00    237.8±0.69µs        ? ?/sec
lexsort_to_indices([i32]): 32768                                                                                                                        1.00    446.3±0.51µs        ? ?/sec
lexsort_to_indices([i32]): 4096                                                                                                                         1.00     44.3±0.04µs        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 32768                                                               1.00      5.7±0.00ms        ? ?/sec    1.00      5.7±0.01ms        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 4096                                                                1.00    519.3±0.85µs        ? ?/sec    1.00    516.8±1.42µs        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 32768                                                      1.00      3.5±0.00ms        ? ?/sec    1.00      3.5±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 4096                                                       1.03    342.4±0.55µs        ? ?/sec    1.00    331.8±0.77µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 32768                                                                   1.00      3.6±0.00ms        ? ?/sec    1.00      3.6±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 4096                                                                    1.03    318.5±0.82µs        ? ?/sec    1.00    308.1±0.74µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                  1.00      4.1±0.01ms        ? ?/sec    1.00      4.1±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                   1.00    351.0±0.66µs        ? ?/sec    1.04    363.7±1.03µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 32768                                                               1.00      3.8±0.00ms        ? ?/sec    1.00      3.8±0.01ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 4096                                                                1.03    339.5±0.53µs        ? ?/sec    1.00    330.6±0.57µs        ? ?/sec
lexsort_to_indices([i32_opt]): 32768                                                                                                                    1.00    373.5±0.44µs        ? ?/sec
lexsort_to_indices([i32_opt]): 4096                                                                                                                     1.00     37.8±0.14µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 100                                                                                              1.00      2.2±0.01ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 1000                                                                                             1.00      3.0±0.02ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 104857                                                                                           1.00     98.4±2.79ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768                                                                                                          1.00      3.6±0.00ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 100                                                                                                1.00     88.7±0.21µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 1000                                                                                               1.00    445.4±1.80µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 3276                                                                                               1.00   1220.0±2.69µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 4096                                                                                                           1.00    272.9±0.79µs        ? ?/sec
lexsort_to_indices([i64]): 32768                                                                                                                        1.00    464.8±0.70µs        ? ?/sec
lexsort_to_indices([i64]): 4096                                                                                                                         1.00     43.1±0.03µs        ? ?/sec
lexsort_to_indices([i64_opt]): 32768                                                                                                                    1.00    385.6±0.56µs        ? ?/sec
lexsort_to_indices([i64_opt]): 4096                                                                                                                     1.00     37.2±0.09µs        ? ?/sec
lexsort_to_indices([str(16)]): 32768                                                                                                                    1.00    566.9±1.36µs        ? ?/sec
lexsort_to_indices([str(16)]): 4096                                                                                                                     1.00     52.3±0.21µs        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 32768                                                                    1.00      8.5±0.42ms        ? ?/sec    1.03      8.7±0.42ms        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 4096                                                                     1.00    587.4±1.19µs        ? ?/sec    1.00    589.1±0.91µs        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 32768                                                                1.00      9.6±0.27ms        ? ?/sec    1.00      9.6±0.40ms        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 4096                                                                 1.00    677.7±0.75µs        ? ?/sec    1.01    683.4±1.05µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                         1.00      5.3±0.01ms        ? ?/sec    1.00      5.3±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                          1.00    460.4±0.83µs        ? ?/sec    1.00    462.0±2.80µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 100                                                                                           1.00      6.3±0.18ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 1000                                                                                          1.00      8.0±0.19ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 104857                                                                                        1.00   225.4±11.95ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768                                                                1.00      5.3±0.00ms        ? ?/sec    1.00      5.3±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 100                                                                                             1.00    208.0±1.12µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 1000                                                                                            1.00    872.0±4.68µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 3276                                                                                            1.00      2.2±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 4096                                                                 1.00    452.0±0.88µs        ? ?/sec    1.01    454.8±1.16µs        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 32768                                                   1.00      5.6±0.02ms        ? ?/sec    1.00      5.6±0.02ms        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 4096                                                    1.03    488.5±0.96µs        ? ?/sec    1.00    474.5±1.03µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 32768                                                                                                                1.00    471.1±0.87µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 4096                                                                                                                 1.00     44.3±0.15µs        ? ?/sec

Per-runner information
lexsort — shard 1/1

Node: gk3-benchmark-cluster-nap-lxiegy2m-6da527fb-j6lg

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

uname:

Linux bench-c6841993501-4876-bmq2k 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench lexsort
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 785.2s
Peak memory 56.5 MiB
Avg memory 18.5 MiB
CPU user 782.5s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 3135.7s
Peak memory 124.1 MiB
Avg memory 21.8 MiB
CPU user 3067.3s
CPU sys 63.4s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: lexsort

Comparing radix_row_sort (03ee81c) to 4e04fea (merge-base) diff

Run configuration
run benchmark lexsort
env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
shards: 1
Details
group                                                                                                            base                                   changed
-----                                                                                                            ----                                   -------
encode([decimal128(18,2), i32]): 32768                                                                                                                  1.00    225.7±1.01µs        ? ?/sec
encode([decimal128(18,2), i32]): 4096                                                                                                                   1.00     28.3±0.01µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                           1.00   1195.9±4.90µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                            1.00    118.5±1.66µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                       1.00   1461.6±6.28µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                        1.00    133.9±0.27µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                           1.00    572.1±2.56µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                            1.00     64.3±0.15µs        ? ?/sec
encode([f64]): 32768                                                                                                                                    1.00     40.4±0.24µs        ? ?/sec
encode([f64]): 4096                                                                                                                                     1.00      5.2±0.04µs        ? ?/sec
encode([f64_opt]): 32768                                                                                                                                1.00     68.5±0.18µs        ? ?/sec
encode([f64_opt]): 4096                                                                                                                                 1.00      6.2±0.01µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                                   1.00      3.4±0.03ms        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                                     1.00     97.8±1.99µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                      1.00     12.0±0.01µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                           1.00      2.3±0.02ms        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 32768                                                                                                             1.00     65.1±0.08µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 4096                                                                                                              1.00      8.5±0.00µs        ? ?/sec
encode([i32, i32_list, str(16)]): 32768                                                                                                                 1.00  1088.8±11.15µs        ? ?/sec
encode([i32, i32_list, str(16)]): 4096                                                                                                                  1.00    115.7±1.64µs        ? ?/sec
encode([i32, i32_opt]): 32768                                                                                                                           1.00     92.5±0.98µs        ? ?/sec
encode([i32, i32_opt]): 4096                                                                                                                            1.00      9.1±0.01µs        ? ?/sec
encode([i32, str(16)]): 32768                                                                                                                           1.00   224.4±14.54µs        ? ?/sec
encode([i32, str(16)]): 4096                                                                                                                            1.00     28.6±1.90µs        ? ?/sec
encode([i32, str_list(4)]): 32768                                                                                                                       1.00      3.4±0.11ms        ? ?/sec
encode([i32, str_list(4)]): 4096                                                                                                                        1.00    344.6±2.08µs        ? ?/sec
encode([i32, str_list_opt(4)]): 32768                                                                                                                   1.00      3.0±0.02ms        ? ?/sec
encode([i32, str_list_opt(4)]): 4096                                                                                                                    1.00    328.3±0.84µs        ? ?/sec
encode([i32, str_opt(16)]): 32768                                                                                                                       1.00    301.8±1.53µs        ? ?/sec
encode([i32, str_opt(16)]): 4096                                                                                                                        1.00     28.1±0.56µs        ? ?/sec
encode([i32]): 32768                                                                                                                                    1.00     34.1±0.02µs        ? ?/sec
encode([i32]): 4096                                                                                                                                     1.00      4.6±0.02µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 32768                                                                                                                  1.00   1044.5±3.47µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 4096                                                                                                                   1.00    102.5±0.49µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                         1.00    355.6±1.81µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                          1.00     37.3±0.04µs        ? ?/sec
encode([i32_opt, i32_list]): 32768                                                                                                                      1.00    944.8±1.92µs        ? ?/sec
encode([i32_opt, i32_list]): 4096                                                                                                                       1.00     94.5±0.10µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                                     1.00   1384.0±3.78µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                                      1.00    142.6±0.55µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 32768                                                                                                                  1.00   1047.8±3.96µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 4096                                                                                                                   1.00    102.5±0.54µs        ? ?/sec
encode([i32_opt]): 32768                                                                                                                                1.00     64.7±0.46µs        ? ?/sec
encode([i32_opt]): 4096                                                                                                                                 1.00      5.7±0.01µs        ? ?/sec
encode([i64(0..1000), i32]): 32768                                                                                                                      1.00     65.2±0.07µs        ? ?/sec
encode([i64(0..1000), i32]): 4096                                                                                                                       1.00      8.5±0.38µs        ? ?/sec
encode([i64]): 32768                                                                                                                                    1.00     38.4±1.20µs        ? ?/sec
encode([i64]): 4096                                                                                                                                     1.00      4.7±0.02µs        ? ?/sec
encode([i64_opt]): 32768                                                                                                                                1.00     66.6±0.39µs        ? ?/sec
encode([i64_opt]): 4096                                                                                                                                 1.00      5.8±0.00µs        ? ?/sec
encode([str(16)]): 32768                                                                                                                                1.00   188.2±12.65µs        ? ?/sec
encode([str(16)]): 4096                                                                                                                                 1.00     23.7±1.52µs        ? ?/sec
encode([str_list(4), i32]): 32768                                                                                                                       1.00      3.2±0.03ms        ? ?/sec
encode([str_list(4), i32]): 4096                                                                                                                        1.00    347.6±2.03µs        ? ?/sec
encode([str_list_opt(4), i32]): 32768                                                                                                                   1.00      3.0±0.04ms        ? ?/sec
encode([str_list_opt(4), i32]): 4096                                                                                                                    1.00    328.0±1.03µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                            1.00  1174.3±12.85µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                             1.00    111.5±2.76µs        ? ?/sec
encode([str_opt(16), str(16)]): 32768                                                                                                                   1.00   452.1±13.48µs        ? ?/sec
encode([str_opt(16), str(16)]): 4096                                                                                                                    1.00     46.9±2.21µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 32768                                                                                                      1.00   787.9±10.23µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                       1.00     84.9±1.81µs        ? ?/sec
encode([str_opt(16)]): 32768                                                                                                                            1.00    271.6±1.06µs        ? ?/sec
encode([str_opt(16)]): 4096                                                                                                                             1.00     24.3±0.47µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 32768                                                                                                           1.00    668.4±2.75µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 4096                                                                                                            1.00     80.0±0.39µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                    1.00      3.5±0.01ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                     1.00    306.2±1.51µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                1.00      3.8±0.01ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                 1.00    331.6±0.51µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                    1.00   1967.7±4.38µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                     1.00    191.6±0.23µs        ? ?/sec
lexsort_radix([f64]): 32768                                                                                                                             1.00    576.5±1.60µs        ? ?/sec
lexsort_radix([f64]): 4096                                                                                                                              1.00     43.0±0.11µs        ? ?/sec
lexsort_radix([f64_opt]): 32768                                                                                                                         1.00    666.5±2.58µs        ? ?/sec
lexsort_radix([f64_opt]): 4096                                                                                                                          1.00     72.6±0.08µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                            1.00     38.3±0.29ms        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                              1.00    667.1±1.32µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                               1.00    107.7±0.68µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                    1.00     36.0±0.35ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 100                                                                                          1.00     21.5±0.21ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 1000                                                                                         1.00     21.4±0.14ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 104857                                                                                       1.00     22.4±0.13ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768                                                                                                      1.00    766.8±2.94µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 100                                                                                            1.00    245.5±0.45µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 1000                                                                                           1.00    258.0±3.44µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 3276                                                                                           1.00    281.9±0.65µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 4096                                                                                                       1.00     43.2±0.51µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 32768                                                                                                          1.00   1517.2±9.02µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 4096                                                                                                           1.00    156.3±1.39µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 32768                                                                                                                    1.00    423.7±1.35µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 4096                                                                                                                     1.00     39.6±0.04µs        ? ?/sec
lexsort_radix([i32, str(16)]): 32768                                                                                                                    1.00   636.6±12.60µs        ? ?/sec
lexsort_radix([i32, str(16)]): 4096                                                                                                                     1.00     68.2±1.64µs        ? ?/sec
lexsort_radix([i32, str_list(4)]): 32768                                                                                                                1.00      4.1±0.06ms        ? ?/sec
lexsort_radix([i32, str_list(4)]): 4096                                                                                                                 1.00    409.6±3.26µs        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 32768                                                                                                            1.00      3.6±0.03ms        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 4096                                                                                                             1.00    403.8±2.59µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 32768                                                                                                                1.00    724.7±5.74µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 4096                                                                                                                 1.00     68.5±0.70µs        ? ?/sec
lexsort_radix([i32]): 32768                                                                                                                             1.00    356.1±1.20µs        ? ?/sec
lexsort_radix([i32]): 4096                                                                                                                              1.00     35.1±0.19µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 32768                                                                                                           1.00   1842.0±6.19µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 4096                                                                                                            1.00    192.7±0.76µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                  1.00   1144.5±6.09µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                   1.00    102.6±0.65µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 32768                                                                                                               1.00   1679.2±8.90µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 4096                                                                                                                1.00    154.2±0.85µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                              1.00      2.2±0.01ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                               1.00    218.9±1.14µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 32768                                                                                                           1.00   1804.6±5.76µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 4096                                                                                                            1.00    176.7±0.92µs        ? ?/sec
lexsort_radix([i32_opt]): 32768                                                                                                                         1.00    672.1±2.32µs        ? ?/sec
lexsort_radix([i32_opt]): 4096                                                                                                                          1.00     53.2±0.17µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 100                                                                                                   1.00     23.3±0.36ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 1000                                                                                                  1.00     22.8±0.43ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 104857                                                                                                1.00     24.2±0.33ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768                                                                                                               1.00    779.8±2.12µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 100                                                                                                     1.00    283.9±0.43µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 1000                                                                                                    1.00    302.1±2.12µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 3276                                                                                                    1.00    318.5±0.34µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 4096                                                                                                                1.00     48.1±0.29µs        ? ?/sec
lexsort_radix([i64]): 32768                                                                                                                             1.00    359.7±0.60µs        ? ?/sec
lexsort_radix([i64]): 4096                                                                                                                              1.00     35.1±0.16µs        ? ?/sec
lexsort_radix([i64_opt]): 32768                                                                                                                         1.00    668.6±1.94µs        ? ?/sec
lexsort_radix([i64_opt]): 4096                                                                                                                          1.00     51.3±0.07µs        ? ?/sec
lexsort_radix([str(16)]): 32768                                                                                                                         1.00   665.5±11.38µs        ? ?/sec
lexsort_radix([str(16)]): 4096                                                                                                                          1.00     75.9±1.35µs        ? ?/sec
lexsort_radix([str_list(4), i32]): 32768                                                                                                                1.00      4.1±0.05ms        ? ?/sec
lexsort_radix([str_list(4), i32]): 4096                                                                                                                 1.00    450.7±2.60µs        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 32768                                                                                                            1.00      4.0±0.04ms        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 4096                                                                                                             1.00    438.1±1.79µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                     1.00  1913.2±11.83µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                      1.00    188.3±2.37µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 100                                                                                                1.00     44.4±0.54ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 1000                                                                                               1.00     44.4±0.47ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 104857                                                                                             1.00     46.6±0.48ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768                                                                                                            1.00  1114.9±11.63µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 100                                                                                                  1.00   673.4±12.45µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 1000                                                                                                 1.00   681.0±12.80µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 3276                                                                                                 1.00   707.3±11.89µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 4096                                                                                                             1.00    121.4±1.96µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 32768                                                                                               1.00   1495.2±8.47µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                1.00    163.0±1.64µs        ? ?/sec
lexsort_radix([str_opt(16)]): 32768                                                                                                                     1.00    933.6±6.80µs        ? ?/sec
lexsort_radix([str_opt(16)]): 4096                                                                                                                      1.00    101.2±0.73µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 32768                                                                                                            1.00   1959.6±6.28µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 4096                                                                                                             1.00    179.8±0.27µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768              1.00      6.5±0.01ms        ? ?/sec    1.00      6.4±0.01ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096               1.01    497.4±1.50µs        ? ?/sec    1.00    493.9±1.71µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768          1.00      6.8±0.01ms        ? ?/sec    1.00      6.7±0.01ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096           1.00    549.8±1.49µs        ? ?/sec    1.00    551.7±1.45µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                              1.00      2.6±0.01ms        ? ?/sec    1.03      2.7±0.01ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                               1.00    241.2±0.24µs        ? ?/sec    1.02    246.2±0.33µs        ? ?/sec
lexsort_rows([f64]): 32768                                                                                                                              1.00   1690.4±2.18µs        ? ?/sec
lexsort_rows([f64]): 4096                                                                                                                               1.00    158.4±0.20µs        ? ?/sec
lexsort_rows([f64_opt]): 32768                                                                                                                          1.00   1504.2±2.46µs        ? ?/sec
lexsort_rows([f64_opt]): 4096                                                                                                                           1.00    136.5±0.16µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                             1.00     75.8±0.47ms        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                               1.00   1280.4±1.11µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                1.00    158.3±0.86µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                     1.00    107.7±0.44ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 32768                                                                                                       1.00   1701.1±2.80µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 4096                                                                                                        1.00    162.0±0.34µs        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 32768                                                                    1.00      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 4096                                                                     1.01    281.1±0.74µs        ? ?/sec    1.00    279.6±1.77µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 32768                                                                              1.00   1733.9±6.84µs        ? ?/sec    1.02   1764.6±2.04µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 4096                                                                               1.00    157.2±0.88µs        ? ?/sec    1.02    160.3±0.31µs        ? ?/sec
lexsort_rows([i32, str(16)]): 32768                                                                              1.00   1894.6±7.21µs        ? ?/sec    1.00  1888.7±14.86µs        ? ?/sec
lexsort_rows([i32, str(16)]): 4096                                                                               1.00    174.6±0.99µs        ? ?/sec    1.02    177.7±2.02µs        ? ?/sec
lexsort_rows([i32, str_list(4)]): 32768                                                                          1.07      7.0±0.25ms        ? ?/sec    1.00      6.5±0.09ms        ? ?/sec
lexsort_rows([i32, str_list(4)]): 4096                                                                           1.00    589.7±3.71µs        ? ?/sec    1.01    592.9±5.11µs        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 32768                                                                      1.04      6.1±0.17ms        ? ?/sec    1.00      5.9±0.04ms        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 4096                                                                       1.00    573.9±2.18µs        ? ?/sec    1.01    577.0±2.63µs        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 32768                                                                          1.00      2.6±0.01ms        ? ?/sec    1.00      2.6±0.00ms        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 4096                                                                           1.01    231.2±0.71µs        ? ?/sec    1.00    229.2±0.80µs        ? ?/sec
lexsort_rows([i32]): 32768                                                                                                                              1.00   1657.9±4.64µs        ? ?/sec
lexsort_rows([i32]): 4096                                                                                                                               1.00    157.6±1.04µs        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 32768                                                                     1.00      2.9±0.01ms        ? ?/sec    1.02      2.9±0.00ms        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 4096                                                                      1.00    272.3±1.24µs        ? ?/sec    1.01    274.9±0.89µs        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 32768                                                            1.00      2.6±0.01ms        ? ?/sec    1.02      2.7±0.00ms        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 4096                                                             1.00    223.1±1.02µs        ? ?/sec    1.01    224.5±0.53µs        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 32768                                                                         1.00      3.1±0.01ms        ? ?/sec    1.01      3.1±0.01ms        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 4096                                                                          1.03    310.2±1.55µs        ? ?/sec    1.00    302.1±0.59µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                        1.00      3.7±0.01ms        ? ?/sec    1.00      3.7±0.01ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                         1.00    327.3±1.37µs        ? ?/sec    1.01    331.5±0.70µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 32768                                                                     1.01      3.3±0.01ms        ? ?/sec    1.00      3.2±0.00ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 4096                                                                      1.00    316.0±1.23µs        ? ?/sec    1.00    315.3±0.63µs        ? ?/sec
lexsort_rows([i32_opt]): 32768                                                                                                                          1.00   1466.8±6.03µs        ? ?/sec
lexsort_rows([i32_opt]): 4096                                                                                                                           1.00    137.4±3.07µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 32768                                                                                                                1.00   1693.3±2.85µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 4096                                                                                                                 1.00    161.1±0.32µs        ? ?/sec
lexsort_rows([i64]): 32768                                                                                                                              1.00   1687.3±2.13µs        ? ?/sec
lexsort_rows([i64]): 4096                                                                                                                               1.00    153.9±0.67µs        ? ?/sec
lexsort_rows([i64_opt]): 32768                                                                                                                          1.00   1506.9±2.44µs        ? ?/sec
lexsort_rows([i64_opt]): 4096                                                                                                                           1.00    135.1±0.28µs        ? ?/sec
lexsort_rows([str(16)]): 32768                                                                                                                          1.00  1973.7±13.31µs        ? ?/sec
lexsort_rows([str(16)]): 4096                                                                                                                           1.00    180.5±1.57µs        ? ?/sec
lexsort_rows([str_list(4), i32]): 32768                                                                          1.08      6.2±0.22ms        ? ?/sec    1.00      5.7±0.07ms        ? ?/sec
lexsort_rows([str_list(4), i32]): 4096                                                                           1.00    540.4±4.62µs        ? ?/sec    1.02    551.4±4.18µs        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 32768                                                                      1.07      5.9±0.23ms        ? ?/sec    1.00      5.5±0.04ms        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 4096                                                                       1.00    532.2±2.93µs        ? ?/sec    1.02    541.1±2.08µs        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                               1.00      3.3±0.01ms        ? ?/sec    1.02      3.4±0.01ms        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                1.00    276.0±1.88µs        ? ?/sec    1.00    277.0±2.94µs        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 32768                                                                      1.00      2.3±0.01ms        ? ?/sec    1.00      2.3±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 4096                                                                       1.00    207.0±1.41µs        ? ?/sec    1.01    209.1±2.43µs        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 32768                                                         1.00      3.0±0.01ms        ? ?/sec    1.02      3.0±0.01ms        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 4096                                                          1.00    254.1±1.43µs        ? ?/sec    1.00    254.1±2.23µs        ? ?/sec
lexsort_rows([str_opt(16)]): 32768                                                                                                                      1.00   1846.3±2.02µs        ? ?/sec
lexsort_rows([str_opt(16)]): 4096                                                                                                                       1.00    161.4±0.47µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 32768                                                                                                      1.00      3.1±0.01ms        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 4096                                                                                                       1.00    265.9±0.88µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768        1.00     12.5±0.01ms        ? ?/sec    1.00     12.5±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096         1.00   1005.7±1.92µs        ? ?/sec    1.01   1012.0±0.79µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768    1.00     12.1±0.01ms        ? ?/sec    1.00     12.1±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096     1.00   1038.1±1.21µs        ? ?/sec    1.00   1041.0±1.26µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                        1.00      3.7±0.01ms        ? ?/sec    1.00      3.7±0.01ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                         1.04    465.7±0.74µs        ? ?/sec    1.00    449.0±1.00µs        ? ?/sec
lexsort_to_indices([f64]): 32768                                                                                                                        1.00    592.8±1.15µs        ? ?/sec
lexsort_to_indices([f64]): 4096                                                                                                                         1.00     48.9±0.03µs        ? ?/sec
lexsort_to_indices([f64_opt]): 32768                                                                                                                    1.00    488.8±0.97µs        ? ?/sec
lexsort_to_indices([f64_opt]): 4096                                                                                                                     1.00     41.5±0.04µs        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                       1.00    163.1±0.77ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                         1.00      4.0±0.00ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                          1.00    414.4±1.01µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576                                                                                               1.00    180.3±2.53ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 100                                                                                     1.00      2.2±0.00ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 1000                                                                                    1.00      2.8±0.00ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 104857                                                                                  1.00     79.0±0.85ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768                                                                                                 1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 100                                                                                       1.00     85.8±0.11µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 1000                                                                                      1.00    352.7±0.76µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 3276                                                                                      1.00    947.6±1.98µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 4096                                                                                                  1.00    235.2±0.49µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 32768                                                              1.00      2.7±0.00ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 4096                                                               1.00    237.1±0.52µs        ? ?/sec    1.01    239.3±0.79µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 32768                                                                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 4096                                                                         1.00    235.0±0.71µs        ? ?/sec    1.02    238.6±0.80µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 32768                                                                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32, str(16)]): 4096                                                                         1.00    234.7±0.62µs        ? ?/sec    1.01    236.7±0.83µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 32768                                                                    1.01      2.7±0.01ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 4096                                                                     1.00    234.8±0.70µs        ? ?/sec    1.01    236.9±0.65µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 32768                                                                1.00      2.7±0.00ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 4096                                                                 1.00    235.5±0.78µs        ? ?/sec    1.01    237.4±0.51µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 32768                                                                    1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.00ms        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 4096                                                                     1.00    236.0±0.76µs        ? ?/sec    1.01    238.7±0.90µs        ? ?/sec
lexsort_to_indices([i32]): 32768                                                                                                                        1.00    446.7±0.91µs        ? ?/sec
lexsort_to_indices([i32]): 4096                                                                                                                         1.00     44.2±0.04µs        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 32768                                                               1.00      5.7±0.00ms        ? ?/sec    1.00      5.7±0.00ms        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 4096                                                                1.03    527.0±1.46µs        ? ?/sec    1.00    513.2±0.82µs        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 32768                                                      1.00      3.5±0.00ms        ? ?/sec    1.00      3.5±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 4096                                                       1.02    346.8±0.50µs        ? ?/sec    1.00    339.0±0.50µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 32768                                                                   1.00      3.6±0.00ms        ? ?/sec    1.00      3.6±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 4096                                                                    1.00    317.4±0.54µs        ? ?/sec    1.00    318.4±0.67µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                  1.00      4.1±0.00ms        ? ?/sec    1.00      4.1±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                   1.00    348.2±0.66µs        ? ?/sec    1.00    349.7±0.46µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 32768                                                               1.00      3.8±0.00ms        ? ?/sec    1.00      3.8±0.00ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 4096                                                                1.00    337.0±0.41µs        ? ?/sec    1.01    342.0±0.52µs        ? ?/sec
lexsort_to_indices([i32_opt]): 32768                                                                                                                    1.00    374.0±0.43µs        ? ?/sec
lexsort_to_indices([i32_opt]): 4096                                                                                                                     1.00     37.7±0.05µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 100                                                                                              1.00      2.2±0.02ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 1000                                                                                             1.00      3.0±0.01ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 104857                                                                                           1.00     93.4±0.85ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768                                                                                                          1.00      3.6±0.01ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 100                                                                                                1.00     87.8±0.15µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 1000                                                                                               1.00    448.1±2.17µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 3276                                                                                               1.00   1217.4±5.03µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 4096                                                                                                           1.00    272.7±1.10µs        ? ?/sec
lexsort_to_indices([i64]): 32768                                                                                                                        1.00    464.2±0.85µs        ? ?/sec
lexsort_to_indices([i64]): 4096                                                                                                                         1.00     43.1±0.07µs        ? ?/sec
lexsort_to_indices([i64_opt]): 32768                                                                                                                    1.00    388.5±0.64µs        ? ?/sec
lexsort_to_indices([i64_opt]): 4096                                                                                                                     1.00     37.2±0.02µs        ? ?/sec
lexsort_to_indices([str(16)]): 32768                                                                                                                    1.00    564.7±0.87µs        ? ?/sec
lexsort_to_indices([str(16)]): 4096                                                                                                                     1.00     52.3±0.18µs        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 32768                                                                    1.00      7.8±0.02ms        ? ?/sec    1.00      7.9±0.01ms        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 4096                                                                     1.01    594.9±0.52µs        ? ?/sec    1.00    589.4±0.63µs        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 32768                                                                1.01      8.8±0.06ms        ? ?/sec    1.00      8.7±0.01ms        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 4096                                                                 1.00    675.3±2.62µs        ? ?/sec    1.00    674.5±1.16µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                         1.00      5.3±0.00ms        ? ?/sec    1.00      5.3±0.00ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                          1.02    472.0±0.50µs        ? ?/sec    1.00    461.6±1.04µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 100                                                                                           1.00      5.6±0.05ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 1000                                                                                          1.00      7.1±0.03ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 104857                                                                                        1.00    200.4±1.79ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768                                                                1.00      5.3±0.00ms        ? ?/sec    1.00      5.3±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 100                                                                                             1.00    217.1±1.61µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 1000                                                                                            1.00    870.1±7.94µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 3276                                                                                            1.00      2.2±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 4096                                                                 1.00    451.3±0.75µs        ? ?/sec    1.00    450.9±0.72µs        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 32768                                                   1.00      5.5±0.00ms        ? ?/sec    1.00      5.5±0.01ms        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 4096                                                    1.00    483.3±1.10µs        ? ?/sec    1.00    483.6±0.62µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 32768                                                                                                                1.00    469.0±0.67µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 4096                                                                                                                 1.00     44.3±0.18µs        ? ?/sec

Per-runner information
lexsort — shard 1/1

Node: gk3-benchmark-cluster-nap-lxiegy2m-b02d82b1-wtxz

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

uname:

Linux bench-c6841995229-4877-69gxn 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench lexsort
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 785.2s
Peak memory 57.8 MiB
Avg memory 19.6 MiB
CPU user 778.6s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 3140.7s
Peak memory 123.7 MiB
Avg memory 23.1 MiB
CPU user 3064.6s
CPU sys 72.2s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Target: lexsort

Comparing radix_row_sort (03ee81c) to 4e04fea (merge-base) diff

Run configuration
run benchmark lexsort
env:
  RUSTFLAGS: -C llvm-args=-align-all-functions=6 -C llvm-args=-align-all-nofallthru-blocks=6
resources:
  arch: amd64
shards: 1
Details
group                                                                                                            base                                   changed
-----                                                                                                            ----                                   -------
encode([decimal128(18,2), i32]): 32768                                                                                                                  1.00   275.1±10.26µs        ? ?/sec
encode([decimal128(18,2), i32]): 4096                                                                                                                   1.00     32.5±1.50µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                           1.00  1591.7±11.19µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                            1.00    125.5±0.58µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                       1.00   1893.9±4.85µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                        1.00    146.8±0.89µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                           1.00    701.9±2.15µs        ? ?/sec
encode([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                            1.00     67.9±0.25µs        ? ?/sec
encode([f64]): 32768                                                                                                                                    1.00     55.9±2.29µs        ? ?/sec
encode([f64]): 4096                                                                                                                                     1.00      7.0±0.27µs        ? ?/sec
encode([f64_opt]): 32768                                                                                                                                1.00    108.5±5.79µs        ? ?/sec
encode([f64_opt]): 4096                                                                                                                                 1.00      8.3±0.54µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                                   1.00      5.3±0.14ms        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                                     1.00    138.3±3.52µs        ? ?/sec
encode([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                      1.00     17.0±0.62µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                           1.00      3.8±0.11ms        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 32768                                                                                                             1.00    100.1±2.98µs        ? ?/sec
encode([i32(1..204K), i64(0..n/10)]): 4096                                                                                                              1.00     12.8±0.33µs        ? ?/sec
encode([i32, i32_list, str(16)]): 32768                                                                                                                 1.00  1334.0±32.32µs        ? ?/sec
encode([i32, i32_list, str(16)]): 4096                                                                                                                  1.00    133.1±0.54µs        ? ?/sec
encode([i32, i32_opt]): 32768                                                                                                                           1.00    125.9±4.56µs        ? ?/sec
encode([i32, i32_opt]): 4096                                                                                                                            1.00     10.5±0.39µs        ? ?/sec
encode([i32, str(16)]): 32768                                                                                                                           1.00    231.8±2.17µs        ? ?/sec
encode([i32, str(16)]): 4096                                                                                                                            1.00     26.9±0.97µs        ? ?/sec
encode([i32, str_list(4)]): 32768                                                                                                                       1.00      4.9±0.01ms        ? ?/sec
encode([i32, str_list(4)]): 4096                                                                                                                        1.00    581.0±5.70µs        ? ?/sec
encode([i32, str_list_opt(4)]): 32768                                                                                                                   1.00      5.0±0.08ms        ? ?/sec
encode([i32, str_list_opt(4)]): 4096                                                                                                                    1.00    575.4±5.52µs        ? ?/sec
encode([i32, str_opt(16)]): 32768                                                                                                                       1.00   359.0±14.61µs        ? ?/sec
encode([i32, str_opt(16)]): 4096                                                                                                                        1.00     35.8±1.32µs        ? ?/sec
encode([i32]): 32768                                                                                                                                    1.00     48.1±1.22µs        ? ?/sec
encode([i32]): 4096                                                                                                                                     1.00      5.9±0.15µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 32768                                                                                                                  1.00  1337.6±10.51µs        ? ?/sec
encode([i32_list_opt, i32_opt]): 4096                                                                                                                   1.00    131.9±1.60µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                         1.00    416.0±1.99µs        ? ?/sec
encode([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                          1.00     43.2±0.17µs        ? ?/sec
encode([i32_opt, i32_list]): 32768                                                                                                                      1.00   1146.7±7.19µs        ? ?/sec
encode([i32_opt, i32_list]): 4096                                                                                                                       1.00    114.6±0.59µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                                     1.00  1815.2±16.18µs        ? ?/sec
encode([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                                      1.00    189.1±1.93µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 32768                                                                                                                  1.00   1341.9±5.14µs        ? ?/sec
encode([i32_opt, i32_list_opt]): 4096                                                                                                                   1.00    133.0±0.90µs        ? ?/sec
encode([i32_opt]): 32768                                                                                                                                1.00    103.3±2.86µs        ? ?/sec
encode([i32_opt]): 4096                                                                                                                                 1.00      7.2±0.13µs        ? ?/sec
encode([i64(0..1000), i32]): 32768                                                                                                                      1.00     91.3±3.89µs        ? ?/sec
encode([i64(0..1000), i32]): 4096                                                                                                                       1.00     11.7±0.48µs        ? ?/sec
encode([i64]): 32768                                                                                                                                    1.00     55.8±1.92µs        ? ?/sec
encode([i64]): 4096                                                                                                                                     1.00      6.3±0.25µs        ? ?/sec
encode([i64_opt]): 32768                                                                                                                                1.00     96.8±4.02µs        ? ?/sec
encode([i64_opt]): 4096                                                                                                                                 1.00      7.1±0.28µs        ? ?/sec
encode([str(16)]): 32768                                                                                                                                1.00    156.7±6.48µs        ? ?/sec
encode([str(16)]): 4096                                                                                                                                 1.00     18.8±0.69µs        ? ?/sec
encode([str_list(4), i32]): 32768                                                                                                                       1.00      5.0±0.09ms        ? ?/sec
encode([str_list(4), i32]): 4096                                                                                                                        1.00    593.2±4.80µs        ? ?/sec
encode([str_list_opt(4), i32]): 32768                                                                                                                   1.00      5.0±0.08ms        ? ?/sec
encode([str_list_opt(4), i32]): 4096                                                                                                                    1.00    584.7±8.06µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                            1.00  1534.8±15.58µs        ? ?/sec
encode([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                             1.00    137.9±1.73µs        ? ?/sec
encode([str_opt(16), str(16)]): 32768                                                                                                                   1.00    513.1±7.35µs        ? ?/sec
encode([str_opt(16), str(16)]): 4096                                                                                                                    1.00     52.0±0.31µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 32768                                                                                                      1.00   1024.3±8.68µs        ? ?/sec
encode([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                       1.00    100.6±1.09µs        ? ?/sec
encode([str_opt(16)]): 32768                                                                                                                            1.00   300.0±12.38µs        ? ?/sec
encode([str_opt(16)]): 4096                                                                                                                             1.00     28.3±1.10µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 32768                                                                                                           1.00   886.7±26.76µs        ? ?/sec
lexsort_radix([decimal128(18,2), i32]): 4096                                                                                                            1.00     93.3±3.99µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768                                                    1.00      3.8±0.03ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096                                                     1.00    307.2±3.68µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768                                                1.00      4.2±0.01ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096                                                 1.00    340.1±3.77µs        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                                                                    1.00      2.0±0.01ms        ? ?/sec
lexsort_radix([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                                                                     1.00    196.5±1.60µs        ? ?/sec
lexsort_radix([f64]): 32768                                                                                                                             1.00   693.9±20.09µs        ? ?/sec
lexsort_radix([f64]): 4096                                                                                                                              1.00     52.0±2.52µs        ? ?/sec
lexsort_radix([f64_opt]): 32768                                                                                                                         1.00   773.7±25.54µs        ? ?/sec
lexsort_radix([f64_opt]): 4096                                                                                                                          1.00     75.1±2.91µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                            1.00     39.9±1.27ms        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                              1.00   739.3±22.48µs        ? ?/sec
lexsort_radix([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                               1.00    116.5±3.25µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                    1.00     46.8±2.09ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 100                                                                                          1.00     22.8±0.31ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 1000                                                                                         1.00     21.5±0.83ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 1048576 limit 104857                                                                                       1.00     22.4±1.01ms        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768                                                                                                      1.00   938.0±18.94µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 100                                                                                            1.00    316.3±7.29µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 1000                                                                                           1.00    321.9±6.35µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 32768 limit 3276                                                                                           1.00    362.0±8.19µs        ? ?/sec
lexsort_radix([i32(1..204K), i64(0..n/10)]): 4096                                                                                                       1.00     55.4±0.96µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 32768                                                                                                          1.00   1850.6±9.49µs        ? ?/sec
lexsort_radix([i32, i32_list, str(16)]): 4096                                                                                                           1.00    204.6±1.99µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 32768                                                                                                                    1.00   523.9±23.80µs        ? ?/sec
lexsort_radix([i32, i32_opt]): 4096                                                                                                                     1.00     45.3±1.41µs        ? ?/sec
lexsort_radix([i32, str(16)]): 32768                                                                                                                    1.00   744.6±13.12µs        ? ?/sec
lexsort_radix([i32, str(16)]): 4096                                                                                                                     1.00     72.3±3.48µs        ? ?/sec
lexsort_radix([i32, str_list(4)]): 32768                                                                                                                1.00      5.6±0.02ms        ? ?/sec
lexsort_radix([i32, str_list(4)]): 4096                                                                                                                 1.00    674.7±4.40µs        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 32768                                                                                                            1.00      5.7±0.04ms        ? ?/sec
lexsort_radix([i32, str_list_opt(4)]): 4096                                                                                                             1.00    666.7±3.76µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 32768                                                                                                                1.00   851.8±37.89µs        ? ?/sec
lexsort_radix([i32, str_opt(16)]): 4096                                                                                                                 1.00     88.6±3.13µs        ? ?/sec
lexsort_radix([i32]): 32768                                                                                                                             1.00   458.1±12.65µs        ? ?/sec
lexsort_radix([i32]): 4096                                                                                                                              1.00     43.9±0.96µs        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 32768                                                                                                           1.00      2.3±0.01ms        ? ?/sec
lexsort_radix([i32_list_opt, i32_opt]): 4096                                                                                                            1.00    239.9±2.05µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 32768                                                                                                  1.00   1397.4±5.71µs        ? ?/sec
lexsort_radix([i32_opt, dict(100,str_opt(50))]): 4096                                                                                                   1.00    116.6±0.67µs        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 32768                                                                                                               1.00      2.0±0.01ms        ? ?/sec
lexsort_radix([i32_opt, i32_list]): 4096                                                                                                                1.00    199.9±2.04µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                                                              1.00      2.8±0.01ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                                                               1.00    277.6±2.30µs        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 32768                                                                                                           1.00      2.3±0.01ms        ? ?/sec
lexsort_radix([i32_opt, i32_list_opt]): 4096                                                                                                            1.00    216.7±2.17µs        ? ?/sec
lexsort_radix([i32_opt]): 32768                                                                                                                         1.00   862.4±15.85µs        ? ?/sec
lexsort_radix([i32_opt]): 4096                                                                                                                          1.00     62.7±1.56µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 100                                                                                                   1.00     24.1±0.82ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 1000                                                                                                  1.00     24.8±1.79ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 1048576 limit 104857                                                                                                1.00     26.4±1.03ms        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768                                                                                                               1.00   910.0±26.86µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 100                                                                                                     1.00    343.0±9.96µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 1000                                                                                                    1.00    355.4±8.92µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 32768 limit 3276                                                                                                    1.00   388.4±13.92µs        ? ?/sec
lexsort_radix([i64(0..1000), i32]): 4096                                                                                                                1.00     54.5±2.69µs        ? ?/sec
lexsort_radix([i64]): 32768                                                                                                                             1.00   451.0±16.71µs        ? ?/sec
lexsort_radix([i64]): 4096                                                                                                                              1.00     42.4±2.05µs        ? ?/sec
lexsort_radix([i64_opt]): 32768                                                                                                                         1.00   795.5±30.65µs        ? ?/sec
lexsort_radix([i64_opt]): 4096                                                                                                                          1.00     58.0±1.92µs        ? ?/sec
lexsort_radix([str(16)]): 32768                                                                                                                         1.00   713.4±26.58µs        ? ?/sec
lexsort_radix([str(16)]): 4096                                                                                                                          1.00     74.5±2.11µs        ? ?/sec
lexsort_radix([str_list(4), i32]): 32768                                                                                                                1.00      6.0±0.04ms        ? ?/sec
lexsort_radix([str_list(4), i32]): 4096                                                                                                                 1.00   712.7±12.15µs        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 32768                                                                                                            1.00      6.1±0.04ms        ? ?/sec
lexsort_radix([str_list_opt(4), i32]): 4096                                                                                                             1.00    713.7±7.67µs        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                                                                     1.00      2.4±0.04ms        ? ?/sec
lexsort_radix([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                                                      1.00    233.5±2.06µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 100                                                                                                1.00     47.1±1.07ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 1000                                                                                               1.00     51.8±3.49ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 1048576 limit 104857                                                                                             1.00     49.2±1.29ms        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768                                                                                                            1.00   1344.5±5.96µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 100                                                                                                  1.00   745.8±17.88µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 1000                                                                                                 1.00   777.1±21.90µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 32768 limit 3276                                                                                                 1.00   800.1±15.28µs        ? ?/sec
lexsort_radix([str_opt(16), str(16)]): 4096                                                                                                             1.00    140.2±5.35µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 32768                                                                                               1.00  1911.0±17.04µs        ? ?/sec
lexsort_radix([str_opt(16), str_opt(50), str(16)]): 4096                                                                                                1.00    199.5±3.61µs        ? ?/sec
lexsort_radix([str_opt(16)]): 32768                                                                                                                     1.00  1016.5±39.14µs        ? ?/sec
lexsort_radix([str_opt(16)]): 4096                                                                                                                      1.00    109.0±4.58µs        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 32768                                                                                                            1.00      2.2±0.09ms        ? ?/sec
lexsort_rows([decimal128(18,2), i32]): 4096                                                                                                             1.00    198.7±5.98µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768              1.00      6.1±0.08ms        ? ?/sec    1.01      6.1±0.06ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096               1.00   499.7±12.92µs        ? ?/sec    1.01    506.9±1.98µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768          1.00      6.7±0.14ms        ? ?/sec    1.02      6.9±0.04ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096           1.00    593.0±9.48µs        ? ?/sec    1.03    608.1±4.34µs        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                              1.00      2.6±0.07ms        ? ?/sec    1.00      2.6±0.01ms        ? ?/sec
lexsort_rows([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                               1.00    257.5±9.24µs        ? ?/sec    1.01    260.1±1.28µs        ? ?/sec
lexsort_rows([f64]): 32768                                                                                                                              1.00  1898.9±61.32µs        ? ?/sec
lexsort_rows([f64]): 4096                                                                                                                               1.00    178.5±7.10µs        ? ?/sec
lexsort_rows([f64_opt]): 32768                                                                                                                          1.00  1758.9±58.37µs        ? ?/sec
lexsort_rows([f64_opt]): 4096                                                                                                                           1.00    152.0±6.26µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                             1.00     83.1±1.79ms        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                               1.00  1906.9±38.71µs        ? ?/sec
lexsort_rows([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                                1.00    223.8±5.96µs        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 1048576                                                                                                     1.00    107.8±2.01ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 32768                                                                                                       1.00      2.1±0.05ms        ? ?/sec
lexsort_rows([i32(1..204K), i64(0..n/10)]): 4096                                                                                                        1.00    194.1±4.98µs        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 32768                                                                    1.00      4.3±0.12ms        ? ?/sec    1.02      4.4±0.02ms        ? ?/sec
lexsort_rows([i32, i32_list, str(16)]): 4096                                                                     1.00    426.5±9.16µs        ? ?/sec    1.03    437.2±3.26µs        ? ?/sec
lexsort_rows([i32, i32_opt]): 32768                                                                              1.11      2.2±0.01ms        ? ?/sec    1.00      2.0±0.07ms        ? ?/sec
lexsort_rows([i32, i32_opt]): 4096                                                                               1.13    201.9±3.46µs        ? ?/sec    1.00    178.6±9.97µs        ? ?/sec
lexsort_rows([i32, str(16)]): 32768                                                                              1.00      2.3±0.06ms        ? ?/sec    1.02      2.3±0.02ms        ? ?/sec
lexsort_rows([i32, str(16)]): 4096                                                                               1.07    215.1±0.87µs        ? ?/sec    1.00    201.7±8.00µs        ? ?/sec
lexsort_rows([i32, str_list(4)]): 32768                                                                          1.00      8.0±0.19ms        ? ?/sec    1.03      8.2±0.05ms        ? ?/sec
lexsort_rows([i32, str_list(4)]): 4096                                                                           1.00   894.5±20.57µs        ? ?/sec    1.01   902.2±11.50µs        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 32768                                                                      1.00      8.2±0.19ms        ? ?/sec    1.02      8.4±0.07ms        ? ?/sec
lexsort_rows([i32, str_list_opt(4)]): 4096                                                                       1.00   900.2±20.30µs        ? ?/sec    1.03   930.4±12.11µs        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 32768                                                                          1.08      2.5±0.02ms        ? ?/sec    1.00      2.3±0.08ms        ? ?/sec
lexsort_rows([i32, str_opt(16)]): 4096                                                                           1.05    235.0±1.48µs        ? ?/sec    1.00    223.1±8.70µs        ? ?/sec
lexsort_rows([i32]): 32768                                                                                                                              1.00      2.1±0.04ms        ? ?/sec
lexsort_rows([i32]): 4096                                                                                                                               1.00    191.6±4.80µs        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 32768                                                                     1.00      4.2±0.07ms        ? ?/sec    1.02      4.3±0.03ms        ? ?/sec
lexsort_rows([i32_list_opt, i32_opt]): 4096                                                                      1.00    422.2±8.08µs        ? ?/sec    1.02    429.8±2.52µs        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 32768                                                            1.00      2.9±0.07ms        ? ?/sec    1.02      3.0±0.02ms        ? ?/sec
lexsort_rows([i32_opt, dict(100,str_opt(50))]): 4096                                                             1.00    287.0±5.02µs        ? ?/sec    1.01    290.5±5.12µs        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 32768                                                                         1.00      3.9±0.08ms        ? ?/sec    1.02      4.0±0.02ms        ? ?/sec
lexsort_rows([i32_opt, i32_list]): 4096                                                                          1.00   407.0±11.07µs        ? ?/sec    1.03    417.8±2.29µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                        1.00      4.6±0.12ms        ? ?/sec    1.01      4.6±0.02ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                         1.00    464.7±7.74µs        ? ?/sec    1.01    468.0±4.15µs        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 32768                                                                     1.00      4.2±0.07ms        ? ?/sec    1.02      4.3±0.02ms        ? ?/sec
lexsort_rows([i32_opt, i32_list_opt]): 4096                                                                      1.00    431.0±8.12µs        ? ?/sec    1.02    439.5±2.72µs        ? ?/sec
lexsort_rows([i32_opt]): 32768                                                                                                                          1.00  1871.0±34.03µs        ? ?/sec
lexsort_rows([i32_opt]): 4096                                                                                                                           1.00    163.9±5.35µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 32768                                                                                                                1.00  1910.3±64.53µs        ? ?/sec
lexsort_rows([i64(0..1000), i32]): 4096                                                                                                                 1.00   181.8±10.50µs        ? ?/sec
lexsort_rows([i64]): 32768                                                                                                                              1.00      2.0±0.06ms        ? ?/sec
lexsort_rows([i64]): 4096                                                                                                                               1.00    192.1±5.60µs        ? ?/sec
lexsort_rows([i64_opt]): 32768                                                                                                                          1.00  1785.9±59.27µs        ? ?/sec
lexsort_rows([i64_opt]): 4096                                                                                                                           1.00    164.1±3.66µs        ? ?/sec
lexsort_rows([str(16)]): 32768                                                                                                                          1.00      2.0±0.06ms        ? ?/sec
lexsort_rows([str(16)]): 4096                                                                                                                           1.00    185.8±5.95µs        ? ?/sec
lexsort_rows([str_list(4), i32]): 32768                                                                          1.00      7.4±0.18ms        ? ?/sec    1.02      7.5±0.12ms        ? ?/sec
lexsort_rows([str_list(4), i32]): 4096                                                                           1.00   829.9±19.08µs        ? ?/sec    1.02    843.5±4.04µs        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 32768                                                                      1.00      7.3±0.18ms        ? ?/sec    1.03      7.6±0.08ms        ? ?/sec
lexsort_rows([str_list_opt(4), i32]): 4096                                                                       1.00   814.5±23.42µs        ? ?/sec    1.04    846.9±7.79µs        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                               1.00      3.8±0.07ms        ? ?/sec    1.02      3.9±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                                1.00    356.1±8.35µs        ? ?/sec    1.02    361.7±9.81µs        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 32768                                                                      1.00      2.7±0.02ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
lexsort_rows([str_opt(16), str(16)]): 4096                                                                       1.01    270.2±3.52µs        ? ?/sec    1.00    266.9±3.32µs        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 32768                                                         1.00      3.3±0.05ms        ? ?/sec    1.01      3.4±0.02ms        ? ?/sec
lexsort_rows([str_opt(16), str_opt(50), str(16)]): 4096                                                          1.00    315.2±4.03µs        ? ?/sec    1.00    315.3±5.41µs        ? ?/sec
lexsort_rows([str_opt(16)]): 32768                                                                                                                      1.00  1957.3±50.20µs        ? ?/sec
lexsort_rows([str_opt(16)]): 4096                                                                                                                       1.00    185.1±9.09µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 32768                                                                                                      1.00  1567.6±140.41µs        ? ?/sec
lexsort_to_indices([decimal128(18,2), i32]): 4096                                                                                                       1.00    143.8±4.86µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 32768        1.00      9.4±0.24ms        ? ?/sec    1.02      9.6±0.09ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str(16)]): 4096         1.00   807.4±20.95µs        ? ?/sec    1.03    828.0±3.75µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 32768    1.00      9.3±0.19ms        ? ?/sec    1.00      9.4±0.04ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50)), dict(100,str_opt(50)), str_opt(50)]): 4096     1.00   891.3±17.27µs        ? ?/sec    1.00    895.2±3.72µs        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 32768                                        1.00      3.0±0.06ms        ? ?/sec    1.01      3.0±0.03ms        ? ?/sec
lexsort_to_indices([dict(100,str_opt(50)), dict(100,str_opt(50))]): 4096                                         1.00    361.7±9.60µs        ? ?/sec    1.02    369.6±1.90µs        ? ?/sec
lexsort_to_indices([f64]): 32768                                                                                                                        1.00   749.8±33.07µs        ? ?/sec
lexsort_to_indices([f64]): 4096                                                                                                                         1.00     58.0±2.07µs        ? ?/sec
lexsort_to_indices([f64_opt]): 32768                                                                                                                    1.00   608.7±24.86µs        ? ?/sec
lexsort_to_indices([f64_opt]): 4096                                                                                                                     1.00     46.7±1.94µs        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 1048576                                                                                       1.00    127.8±2.08ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 32768                                                                                         1.00      3.4±0.07ms        ? ?/sec
lexsort_to_indices([i32(0..10), i32(0..10), i32(0..10)]): 4096                                                                                          1.00   374.0±12.20µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576                                                                                               1.00    103.8±1.58ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 100                                                                                     1.00      2.3±0.04ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 1000                                                                                    1.00      3.0±0.07ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 1048576 limit 104857                                                                                  1.00     64.8±2.06ms        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768                                                                                                 1.00  1516.1±40.51µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 100                                                                                       1.00     97.3±4.82µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 1000                                                                                      1.00    441.6±8.92µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 32768 limit 3276                                                                                      1.00  1121.1±34.83µs        ? ?/sec
lexsort_to_indices([i32(1..204K), i64(0..n/10)]): 4096                                                                                                  1.00    140.2±1.61µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 32768                                                              1.00  1459.6±48.72µs        ? ?/sec    1.03  1499.2±14.55µs        ? ?/sec
lexsort_to_indices([i32, i32_list, str(16)]): 4096                                                               1.00    141.3±4.11µs        ? ?/sec    1.02    144.3±0.95µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 32768                                                                        1.13   1464.8±6.01µs        ? ?/sec    1.00  1298.1±34.57µs        ? ?/sec
lexsort_to_indices([i32, i32_opt]): 4096                                                                         1.12    141.9±0.70µs        ? ?/sec    1.00    127.0±5.53µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 32768                                                                        1.03  1471.5±19.85µs        ? ?/sec    1.00  1428.7±40.25µs        ? ?/sec
lexsort_to_indices([i32, str(16)]): 4096                                                                         1.10    142.9±0.74µs        ? ?/sec    1.00    130.0±5.61µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 32768                                                                    1.00  1435.0±72.05µs        ? ?/sec    1.02  1468.9±13.65µs        ? ?/sec
lexsort_to_indices([i32, str_list(4)]): 4096                                                                     1.01    139.7±2.41µs        ? ?/sec    1.00    137.7±3.94µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 32768                                                                1.00  1447.5±44.86µs        ? ?/sec    1.02  1479.7±12.05µs        ? ?/sec
lexsort_to_indices([i32, str_list_opt(4)]): 4096                                                                 1.00    137.3±4.62µs        ? ?/sec    1.03    141.1±1.14µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 32768                                                                    1.07  1477.3±18.03µs        ? ?/sec    1.00  1374.9±50.32µs        ? ?/sec
lexsort_to_indices([i32, str_opt(16)]): 4096                                                                     1.08    143.3±1.48µs        ? ?/sec    1.00    132.3±4.47µs        ? ?/sec
lexsort_to_indices([i32]): 32768                                                                                                                        1.00   510.5±10.87µs        ? ?/sec
lexsort_to_indices([i32]): 4096                                                                                                                         1.00     42.0±0.74µs        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 32768                                                               1.00      4.7±0.10ms        ? ?/sec    1.01      4.7±0.02ms        ? ?/sec
lexsort_to_indices([i32_list_opt, i32_opt]): 4096                                                                1.00    487.0±8.91µs        ? ?/sec    1.01    493.3±2.14µs        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 32768                                                      1.00      2.6±0.05ms        ? ?/sec    1.02      2.7±0.01ms        ? ?/sec
lexsort_to_indices([i32_opt, dict(100,str_opt(50))]): 4096                                                       1.00    272.6±6.43µs        ? ?/sec    1.02    276.9±4.02µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 32768                                                                   1.00      2.6±0.07ms        ? ?/sec    1.02      2.6±0.02ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list]): 4096                                                                    1.00    240.8±7.16µs        ? ?/sec    1.04    249.7±2.43µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 32768                                                  1.00      3.1±0.04ms        ? ?/sec    1.01      3.2±0.03ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt, str_opt(50)]): 4096                                                   1.00    294.4±8.34µs        ? ?/sec    1.01    297.9±1.30µs        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 32768                                                               1.00      2.9±0.04ms        ? ?/sec    1.01      2.9±0.02ms        ? ?/sec
lexsort_to_indices([i32_opt, i32_list_opt]): 4096                                                                1.00    275.5±4.91µs        ? ?/sec    1.01    277.5±1.67µs        ? ?/sec
lexsort_to_indices([i32_opt]): 32768                                                                                                                    1.00   421.3±13.12µs        ? ?/sec
lexsort_to_indices([i32_opt]): 4096                                                                                                                     1.00     35.6±1.07µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 100                                                                                              1.00      2.3±0.07ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 1000                                                                                             1.00      3.3±0.15ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 1048576 limit 104857                                                                                           1.00     83.8±1.61ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768                                                                                                          1.00      2.3±0.09ms        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 100                                                                                                1.00     96.9±4.41µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 1000                                                                                               1.00    564.6±9.62µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 32768 limit 3276                                                                                               1.00  1435.1±34.31µs        ? ?/sec
lexsort_to_indices([i64(0..1000), i32]): 4096                                                                                                           1.00    158.5±7.13µs        ? ?/sec
lexsort_to_indices([i64]): 32768                                                                                                                        1.00   648.9±42.87µs        ? ?/sec
lexsort_to_indices([i64]): 4096                                                                                                                         1.00     47.2±1.17µs        ? ?/sec
lexsort_to_indices([i64_opt]): 32768                                                                                                                    1.00   539.0±22.56µs        ? ?/sec
lexsort_to_indices([i64_opt]): 4096                                                                                                                     1.00     40.5±0.81µs        ? ?/sec
lexsort_to_indices([str(16)]): 32768                                                                                                                    1.00   586.0±17.25µs        ? ?/sec
lexsort_to_indices([str(16)]): 4096                                                                                                                     1.00     47.4±1.70µs        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 32768                                                                    1.00      6.0±0.12ms        ? ?/sec    1.02      6.1±0.11ms        ? ?/sec
lexsort_to_indices([str_list(4), i32]): 4096                                                                     1.00   494.1±13.55µs        ? ?/sec    1.03    506.6±2.40µs        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 32768                                                                1.00      7.2±0.18ms        ? ?/sec    1.02      7.4±0.07ms        ? ?/sec
lexsort_to_indices([str_list_opt(4), i32]): 4096                                                                 1.00   649.5±11.84µs        ? ?/sec    1.02    662.7±7.41µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 32768                         1.00      4.0±0.08ms        ? ?/sec    1.03      4.2±0.05ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16), str_opt(16), str_opt(16), str_opt(16)]): 4096                          1.00    387.3±9.76µs        ? ?/sec    1.02    395.0±5.70µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 100                                                                                           1.00      6.3±0.17ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 1000                                                                                          1.00      8.1±0.18ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 1048576 limit 104857                                                                                        1.00    169.7±5.24ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768                                                                1.00      4.1±0.04ms        ? ?/sec    1.00      4.1±0.02ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 100                                                                                             1.00    266.3±7.99µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 1000                                                                                            1.00  1035.3±35.19µs        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 32768 limit 3276                                                                                            1.00      2.5±0.06ms        ? ?/sec
lexsort_to_indices([str_opt(16), str(16)]): 4096                                                                 1.00    388.7±2.44µs        ? ?/sec    1.00    388.0±4.49µs        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 32768                                                   1.00      4.3±0.07ms        ? ?/sec    1.01      4.4±0.16ms        ? ?/sec
lexsort_to_indices([str_opt(16), str_opt(50), str(16)]): 4096                                                    1.00    412.4±2.73µs        ? ?/sec    1.01    415.0±6.59µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 32768                                                                                                                1.00   494.6±19.20µs        ? ?/sec
lexsort_to_indices([str_opt(16)]): 4096                                                                                                                 1.00     39.5±1.90µs        ? ?/sec

Per-runner information
lexsort — shard 1/1

Node: gk3-benchmark-cluster-nap-gag2u7qv-61f675e5-xbbk

Instance: c4-highmem-16 (12 vCPU / 65 GiB)

uname:

Linux bench-c6841998114-4879-jm4t6 6.12.105+ #1 SMP Sat Sep 19 07:57:03 UTC 2026 x86_64 GNU/Linux

BENCH_COMMAND:

cargo bench --features=arrow,async,test_common,experimental,object_store --bench lexsort
CPU Details (lscpu)
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 57 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               GenuineIntel
Model name:                              INTEL(R) XEON(R) PLATINUM 8581C CPU @ 2.30GHz
CPU family:                              6
Model:                                   207
Thread(s) per core:                      2
Core(s) per socket:                      8
Socket(s):                               1
Stepping:                                2
BogoMIPS:                                4600.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid cldemote movdiri movdir64b fsrm md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 arch_capabilities
Hypervisor vendor:                       KVM
Virtualization type:                     full
L1d cache:                               384 KiB (8 instances)
L1i cache:                               256 KiB (8 instances)
L2 cache:                                16 MiB (8 instances)
L3 cache:                                260 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Resource Usage

base (merge-base)

Metric Value
Wall time 800.2s
Peak memory 58.7 MiB
Avg memory 20.6 MiB
CPU user 795.4s
CPU sys 0.1s
Peak spill 0 B

branch

Metric Value
Wall time 3090.7s
Peak memory 124.0 MiB
Avg memory 23.7 MiB
CPU user 3029.4s
CPU sys 58.2s
Peak spill 0 B

File an issue against this benchmark runner

@mbutrovich

Copy link
Copy Markdown
Contributor Author

I added limit: Option<usize> to radix_sort_to_indices. With a limit, the MSD radix sort skips buckets that start at or after limit and stops ordering tied rows past it.

An unlimited sort passes a zero-sized Unlimited type instead of a usize. A first version passed the limit as a usize argument to msd_radix_sort in every case, and I changed it after checking small inputs. The zero-sized type keeps the unlimited sort's arguments the same as before the limit.

The benchmark bot at 03ee81c against d3824b8, which has no limit, shows no change on the full-sort path. The median speedup of lexsort_radix over lexsort_to_indices moved by 0.985x to 1.002x across the four runs (Neoverse-V2 and Xeon Platinum 8581C, default and aligned). The per-case minimums are 0.86x to 0.92x. The untouched encode cases have minimums of 0.75x to 0.96x in the same runs, so that spread is run noise.

With a limit, radix sort is faster than lexsort_to_indices from limit 1000 on 32768 rows (1.28x to 1.68x) and at limit n/10 on 1M rows (2.89x to 4.60x). It is slower at limit 100 (0.28x to 0.36x on 32768 rows, 0.09x to 0.15x on 1M rows). The PR description has the limit tables and chart.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arrow Changes to the arrow crate arrow-core Core crates related to representing arrow data arrow-row arrow-row crate performance

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants