adriangb commented on PR #10745:
URL: https://github.com/apache/arrow-rs/pull/10745#issuecomment-5339165212

   ### Runner results (`c4a-highmem-16`), three ways, with controls
   
   Filtered = `BENCH_FILTER: 
^(small|medium|large)_string_(shared_prefix|partial_prefix|distinct)` (the 
delta-byte-array benches, ~8-minute jobs, tight numbers). Means of three runs 
with per-run deltas; the control column is what identical code reports on the 
same job type.
   
   #### Stacked on #10554 (`6584407`), vs #10554 — isolates this change
   
   Runs 
[1](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5339115935) 
[2](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5339120747) 
[3](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5339125526), 
control 
[10554-vs-10554](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5337355027),
 full `arrow_writer` ×2 
[1](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5338017189) 
[2](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5338019469).
   
   | benchmark | per run | mean | control |
   |---|---|---|---|
   | `large_string_shared_prefix_nullable/delta_byte_array` | −23.3 / −26.9 / 
−22.9 | **−24.4%** | +0.8 |
   | `large_string_shared_prefix_nullable_trailing/delta_byte_array` | −23.6 / 
−24.7 / −21.2 | **−23.2%** | −0.2 |
   | `large_string_shared_prefix_nullable_dense/delta_byte_array` | −22.4 / 
−22.4 / −21.1 | **−22.0%** | +0.7 |
   | `large_string_shared_prefix/delta_byte_array` (non-null) | −23.0 / −21.3 / 
−21.4 | **−21.9%** | −0.7 |
   | `medium_string_shared_prefix_nullable/delta_byte_array` | −6.4 / −4.5 / 
−10.8 | −7.2% | +4.9 |
   | `large_string_distinct_nullable/delta_byte_array` | −7.2 / −4.4 / −4.6 | 
**−5.4%** | −0.8 |
   | `large_string_distinct/delta_byte_array` | −5.0 / −2.6 / −4.3 | −4.0% | 
−0.2 |
   | `large_string_*/plain`, `small_string_*/delta_byte_array` | −3.5 … +0.8 | 
| |
   
   The two full runs agree (`shared_prefix` −25.2%, `_trailing` −26.4%, 
`_dense` −20.8%, `_nullable` −17.4%, `medium` −17.8%, `distinct_nullable` 
−6.8%, `distinct` −7.3%) and show nothing else moving in both runs the same way 
outside what the main-vs-main control moves.
   
   Why the split between −22% and −5%: values with a shared prefix are written 
in increasing order, so the mini-batch max beats the running max every time and 
only the min copy is saved (one of two, on every value); `distinct*` values are 
also increasing, but there a page holds two values, so the copy is only saved 
on the second — half as often.
   
   #### Stacked on #10554, vs #10505 (`2d2d4ad`) — what #10554 looks like once 
this is under it
   
   Runs 
[1](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5337355337) 
[2](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5339125945) 
[3](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5339126320).
   
   | benchmark | #10554 alone vs #10505 | #10554 + this vs #10505 (per run) | 
mean |
   |---|---|---|---|
   | `large_string_distinct_nullable/delta_byte_array` | +14.7% | +1.8 / +5.1 / 
+9.4 | **+5.4%** |
   | `large_string_shared_prefix_nullable/delta_byte_array` | +18.3% | −12.5 / 
−13.0 / −15.2 | **−13.6%** |
   | `large_string_shared_prefix_nullable_dense/delta_byte_array` | +2.0% | 
−29.1 / −21.7 / −21.7 | **−24.2%** |
   | `large_string_shared_prefix_nullable_trailing/delta_byte_array` | −24.9% | 
−44.4 / −40.2 / −40.9 | **−41.9%** |
   | `medium_string_shared_prefix_nullable/delta_byte_array` | +3.0% | −6.8 / 
−11.1 / −6.2 | −8.0% |
   | `large_string_shared_prefix/delta_byte_array` (non-null) | +0.9% | −32.5 / 
−19.0 / −21.7 | −24.4% |
   | `large_string_distinct/delta_byte_array` (non-null) | −3.0% | −7.0 / −12.5 
/ −4.0 | −7.8% |
   
   #### Alone, vs `main` (`177bde8`)
   
   Filtered 
[1](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5336684411) 
[2](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5336687519) 
[3](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5336689766) + 
[control](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5336747380);
 full `arrow_writer` 
[1](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5337331144) 
[2](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5337333595) 
[3](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5337394280) + 
[control](https://github.com/apache/arrow-rs/pull/10745#issuecomment-5337404259).
   
   - The over-limit DBA benches are flat (runs 1–2 within ±1%; run 3 is a noise 
wave the control also shows). Expected: on `main` every over-limit value 
already opens its own page (the bug #10505 fixes), `flush_data_page` takes the 
running min/max on every mini-batch, and both copies happen regardless.
   - `large_string_non_null/*` (1024 × 256 KiB, default properties): **−7.4 … 
−8.9%** in all three full runs (`default` −5.7 / −8.4 / −12.5, `parquet_2` −5.9 
/ −8.0 / −12.5, `zstd` −5.7 / −7.8 / −12.5, `bloom_filter` −5.0 / −7.2 / −10.0) 
with the control at −0.1 … −1.1. So it does pay on `main` wherever a page holds 
more than one mini-batch of large values.
   - Nothing else in the full suite moves consistently; `string/parquet_2` (+53 
/ +9 / +8) is the bench the main-vs-main control moved +56% on identical code 
yesterday.
   
   **Bottom line:** −22% on large-value shared-prefix `DELTA_BYTE_ARRAY` 
columns and −5% on distinct ones once #10505 is in, −7…−9% on 
`large_string_non_null` on `main` today, nothing negative anywhere. It turns 
#10554's one regression (+15% vs #10505) into +5%, and its other shapes into 
further wins. Independent of both PRs; rebasing onto `main` and marking ready.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to