Skip to content

GH-50822 [C++][Parquet] Make DELTA_BYTE_ARRAY value reconstruction storage-agnostic - #50823

Open
marcin-krystianc wants to merge 4 commits into
apache:mainfrom
marcin-krystianc:dev-20260702-flba-decoder-follow-up
Open

marcin-krystianc wants to merge 4 commits into
apache:mainfrom
marcin-krystianc:dev-20260702-flba-decoder-follow-up

Conversation

@marcin-krystianc

@marcin-krystianc marcin-krystianc commented Aug 6, 2026 •

Copy link
Copy Markdown
Contributor

Rationale for this change

Follow-up to #50335.

DeltaByteArrayFLBADecoder::Decode(uint8_t*, int) decodes into a
temporary std::vector<ByteArray> and then copies the bytes into the caller's buffer,
because DeltaByteArrayDecoderImpl::GetInternal only supports ByteArray output. The
vector is a per-call allocation, and the pointer it holds for every value is discarded
immediately after the copy.

What changes are included in this PR?

Adds two output policy structs, ByteArrayOutput and DenseOutput for DeltaByteArrayFLBADecoder:

  • ByteArrayOutput reproduces the previous behavior: it decodes values into a ByteArray* buffer
  • DenseOutput writes each reconstructed fixed-length value directly into a caller-provided uint8_t* buffer

Adds benchmarks to test the DeltaByteArrayFLBADecoder performance.

  • Before the change
Running /workspace/arrow/cpp/build/release/parquet-encoding-benchmark
Run on (20 X 2112 MHz CPU s)
CPU Caches:
  L1 Data 48 KiB (x10)
  L1 Instruction 32 KiB (x10)
  L2 Unified 1280 KiB (x10)
  L3 Unified 25600 KiB (x1)
Load Average: 2.22, 3.84, 3.64
---------------------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                             Time             CPU   Iterations UserCounters...
---------------------------------------------------------------------------------------------------------------------------------------
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:10              3217 ns         3215 ns       221856 bytes_per_second=303.706Mi/s compression_ratio=0.760208 items_per_second=159.229M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:90              3923 ns         3921 ns       185631 bytes_per_second=249.056Mi/s compression_ratio=1.38753 items_per_second=130.577M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:99              3929 ns         3927 ns       182369 bytes_per_second=248.649Mi/s compression_ratio=1.79649 items_per_second=130.363M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:10            11335 ns        11329 ns        62995 bytes_per_second=344.803Mi/s compression_ratio=0.76148 items_per_second=180.776M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:90            15514 ns        15506 ns        43892 bytes_per_second=251.918Mi/s compression_ratio=1.40466 items_per_second=132.078M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:99            16525 ns        16517 ns        42482 bytes_per_second=236.502Mi/s compression_ratio=1.7747 items_per_second=123.995M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:10             2796 ns         2794 ns       249283 bytes_per_second=2.73034Gi/s compression_ratio=0.966836 items_per_second=183.23M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:90             4512 ns         4510 ns       151783 bytes_per_second=1.69171Gi/s compression_ratio=1.70489 items_per_second=113.529M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:99             4729 ns         4727 ns       139167 bytes_per_second=1.61411Gi/s compression_ratio=1.78203 items_per_second=108.321M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:10           11151 ns        11144 ns        62274 bytes_per_second=2.73856Gi/s compression_ratio=0.966836 items_per_second=183.781M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:90           17927 ns        17918 ns        39408 bytes_per_second=1.70318Gi/s compression_ratio=1.6732 items_per_second=114.298M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:99           19689 ns        19678 ns        34933 bytes_per_second=1.55083Gi/s compression_ratio=1.79168 items_per_second=104.075M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:10         3309 ns         3308 ns       211062 bytes_per_second=295.22Mi/s compression_ratio=0.760208 items_per_second=154.78M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:90         4273 ns         4271 ns       162512 bytes_per_second=228.642Mi/s compression_ratio=1.38753 items_per_second=119.874M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:99         4404 ns         4402 ns       157929 bytes_per_second=221.87Mi/s compression_ratio=1.79649 items_per_second=116.324M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:10       12811 ns        12804 ns        54299 bytes_per_second=305.071Mi/s compression_ratio=0.76148 items_per_second=159.945M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:90       17186 ns        17178 ns        39521 bytes_per_second=227.399Mi/s compression_ratio=1.40466 items_per_second=119.223M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:99       18260 ns        18250 ns        38287 bytes_per_second=214.042Mi/s compression_ratio=1.7747 items_per_second=112.219M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:10        3218 ns         3217 ns       214108 bytes_per_second=2.37183Gi/s compression_ratio=0.966836 items_per_second=159.171M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:90        4807 ns         4805 ns       126853 bytes_per_second=1.58781Gi/s compression_ratio=1.70489 items_per_second=106.556M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:99        4941 ns         4939 ns       137130 bytes_per_second=1.54488Gi/s compression_ratio=1.78203 items_per_second=103.675M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:10      12255 ns        12249 ns        55533 bytes_per_second=2.4915Gi/s compression_ratio=0.966836 items_per_second=167.202M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:90      19460 ns        19338 ns        35959 bytes_per_second=1.57813Gi/s compression_ratio=1.6732 items_per_second=105.906M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:99      21114 ns        21103 ns        32878 bytes_per_second=1.4461Gi/s compression_ratio=1.79168 items_per_second=97.0458M/s
  • After the change
Running /workspace/arrow/cpp/build/release/parquet-encoding-benchmark
Run on (20 X 2112 MHz CPU s)
CPU Caches:
  L1 Data 48 KiB (x10)
  L1 Instruction 32 KiB (x10)
  L2 Unified 1280 KiB (x10)
  L3 Unified 25600 KiB (x1)
Load Average: 1.24, 6.66, 4.25
---------------------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                             Time             CPU   Iterations UserCounters...
---------------------------------------------------------------------------------------------------------------------------------------
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:10              3419 ns         3418 ns       188811 bytes_per_second=285.752Mi/s compression_ratio=0.760208 items_per_second=149.816M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:90              3843 ns         3841 ns       174937 bytes_per_second=254.249Mi/s compression_ratio=1.38753 items_per_second=133.3M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:99              3730 ns         3728 ns       186091 bytes_per_second=261.966Mi/s compression_ratio=1.79649 items_per_second=137.345M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:10            13447 ns        13439 ns        51135 bytes_per_second=290.661Mi/s compression_ratio=0.76148 items_per_second=152.39M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:90            17300 ns        17292 ns        39339 bytes_per_second=225.901Mi/s compression_ratio=1.40466 items_per_second=118.437M/s
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:99            16789 ns        16781 ns        40393 bytes_per_second=232.784Mi/s compression_ratio=1.7747 items_per_second=122.046M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:10             3138 ns         3137 ns       226716 bytes_per_second=2.43218Gi/s compression_ratio=0.966836 items_per_second=163.221M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:90             3569 ns         3568 ns       192341 bytes_per_second=2.13857Gi/s compression_ratio=1.70489 items_per_second=143.517M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:99             3437 ns         3435 ns       198130 bytes_per_second=2.22082Gi/s compression_ratio=1.78203 items_per_second=149.036M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:10           12079 ns        12072 ns        56551 bytes_per_second=2.52788Gi/s compression_ratio=0.966836 items_per_second=169.643M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:90           14949 ns        14941 ns        43250 bytes_per_second=2.04249Gi/s compression_ratio=1.6732 items_per_second=137.069M/s
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:99           15358 ns        15350 ns        45877 bytes_per_second=1.98814Gi/s compression_ratio=1.79168 items_per_second=133.422M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:10         3262 ns         3261 ns       212131 bytes_per_second=299.505Mi/s compression_ratio=0.760208 items_per_second=157.027M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:90         3518 ns         3516 ns       196251 bytes_per_second=277.715Mi/s compression_ratio=1.38753 items_per_second=145.603M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:99         3536 ns         3534 ns       199117 bytes_per_second=276.305Mi/s compression_ratio=1.79649 items_per_second=144.863M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:10       12662 ns        12656 ns        55254 bytes_per_second=308.658Mi/s compression_ratio=0.76148 items_per_second=161.826M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:90       16081 ns        16073 ns        40982 bytes_per_second=243.035Mi/s compression_ratio=1.40466 items_per_second=127.421M/s
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:99       16415 ns        16407 ns        42847 bytes_per_second=238.086Mi/s compression_ratio=1.7747 items_per_second=124.825M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:10        2969 ns         2968 ns       238205 bytes_per_second=2.57067Gi/s compression_ratio=0.966836 items_per_second=172.515M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:90        3462 ns         3460 ns       203926 bytes_per_second=2.20507Gi/s compression_ratio=1.70489 items_per_second=147.98M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:99        3392 ns         3390 ns       200885 bytes_per_second=2.25044Gi/s compression_ratio=1.78203 items_per_second=151.025M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:10      11560 ns        11554 ns        60264 bytes_per_second=2.64135Gi/s compression_ratio=0.966836 items_per_second=177.258M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:90      14602 ns        14512 ns        49410 bytes_per_second=2.10297Gi/s compression_ratio=1.6732 items_per_second=141.128M/s
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:99      14782 ns        14775 ns        47312 bytes_per_second=2.06547Gi/s compression_ratio=1.79168 items_per_second=138.612M/s

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

⚠️ GitHub issue #50822 has been automatically assigned in GitHub to PR creator.

@marcin-krystianc
marcin-krystianc force-pushed the dev-20260702-flba-decoder-follow-up branch from bfac4bf to dd5c36a Compare September 14, 2026 10:40
@marcin-krystianc
marcin-krystianc marked this pull request as ready for review September 14, 2026 11:19

@adamreeve adamreeve left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this @marcin-krystianc

Looking at the benchmark results, I see that DeltaDecodingDenseFLBA is faster than it was before, and now consistently faster than the non-dense path, whereas before it was always slower. But the non-dense path results are slower in some cases than before. Is that just noise, or is it repeatable, and if so, is it possible to get back some of the performance for those rows?

I suspect it's not just noise, because it looks like the performance change is correlated with the prefix percent (10% prefixed is consistently slower, but 90% and 99% are mostly faster).

Could you also check before and after results for the BM_DeltaDecodingByteArray benchmarks?

Comment thread cpp/src/parquet/decoder.cc Outdated
Comment thread cpp/src/parquet/decoder.cc Outdated
@github-actions github-actions Bot added awaiting review Awaiting review awaiting committer review Awaiting committer review and removed awaiting review Awaiting review labels Oct 21, 2026
@marcin-krystianc

Copy link
Copy Markdown
Contributor Author

Thanks for the review, @adamreeve.

The slowdown in the non-dense FLBA path was real. In the previous version, DecodePointers decoded every value into buffered_data_ with DecodeDense and then pointed into it, so every value was copied. This is fixed, and Decode(FixedLenByteArray*) now goes through the same GetInternal path as BYTE_ARRAY, so it only copies values with both a prefix and a suffix. Other values point to their suffix in the page or to the previous value.

Now, also added ArrowOutput, so BYTE_ARRAY and FLBA DecodeArrow no longer decode into a temporary ByteArray buffer. They append each value straight to the builder.

Benchmarks, main vs this PR
--------------------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                                                        main        PR    
--------------------------------------------------------------------------------------------------------------------------------------
BM_DeltaDecodingByteArray/max-string-length:8/batch-size:512/prefixed-percent:10                                2231 ns    1878 ns    
BM_DeltaDecodingByteArray/max-string-length:8/batch-size:512/prefixed-percent:90                                3318 ns    2849 ns    
BM_DeltaDecodingByteArray/max-string-length:8/batch-size:512/prefixed-percent:99                                3399 ns    2949 ns    
BM_DeltaDecodingByteArray/max-string-length:8/batch-size:2048/prefixed-percent:10                               8942 ns    6974 ns    
BM_DeltaDecodingByteArray/max-string-length:8/batch-size:2048/prefixed-percent:90                              13059 ns   11140 ns    
BM_DeltaDecodingByteArray/max-string-length:8/batch-size:2048/prefixed-percent:99                              13142 ns   11584 ns    
BM_DeltaDecodingByteArray/max-string-length:64/batch-size:512/prefixed-percent:10                               2164 ns    1860 ns    
BM_DeltaDecodingByteArray/max-string-length:64/batch-size:512/prefixed-percent:90                               3697 ns    3351 ns    
BM_DeltaDecodingByteArray/max-string-length:64/batch-size:512/prefixed-percent:99                               3853 ns    3504 ns    
BM_DeltaDecodingByteArray/max-string-length:64/batch-size:2048/prefixed-percent:10                              8634 ns    7586 ns    
BM_DeltaDecodingByteArray/max-string-length:64/batch-size:2048/prefixed-percent:90                             14722 ns   13340 ns    
BM_DeltaDecodingByteArray/max-string-length:64/batch-size:2048/prefixed-percent:99                             15734 ns   14378 ns    
BM_DeltaDecodingByteArray/max-string-length:1024/batch-size:512/prefixed-percent:10                             2666 ns    2405 ns    
BM_DeltaDecodingByteArray/max-string-length:1024/batch-size:512/prefixed-percent:90                             7840 ns    7474 ns    
BM_DeltaDecodingByteArray/max-string-length:1024/batch-size:512/prefixed-percent:99                             8681 ns    8129 ns    
BM_DeltaDecodingByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:10                           10635 ns    9153 ns    
BM_DeltaDecodingByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:90                           37811 ns   38028 ns    
BM_DeltaDecodingByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:99                           41686 ns   40220 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:512/prefixed-percent:10/null-percent:0            8048 ns    4895 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:512/prefixed-percent:10/null-percent:50          11770 ns    7897 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:512/prefixed-percent:90/null-percent:0            9329 ns    5591 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:512/prefixed-percent:90/null-percent:50          12911 ns    8854 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:512/prefixed-percent:99/null-percent:0            9195 ns    5652 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:512/prefixed-percent:99/null-percent:50          12895 ns    8787 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:2048/prefixed-percent:10/null-percent:0          34104 ns   18063 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:2048/prefixed-percent:10/null-percent:50         59148 ns   32797 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:2048/prefixed-percent:90/null-percent:0          38993 ns   21600 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:2048/prefixed-percent:90/null-percent:50         67769 ns   39834 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:2048/prefixed-percent:99/null-percent:0          37679 ns   23487 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:8/batch-size:2048/prefixed-percent:99/null-percent:50         68561 ns   38294 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:512/prefixed-percent:10/null-percent:0           8515 ns    5015 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:512/prefixed-percent:10/null-percent:50         12169 ns    8036 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:512/prefixed-percent:90/null-percent:0          10279 ns    5764 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:512/prefixed-percent:90/null-percent:50         13850 ns    8990 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:512/prefixed-percent:99/null-percent:0          10327 ns    5678 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:512/prefixed-percent:99/null-percent:50         14653 ns    8895 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:2048/prefixed-percent:10/null-percent:0         37757 ns   18967 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:2048/prefixed-percent:10/null-percent:50        61876 ns   33398 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:2048/prefixed-percent:90/null-percent:0         49373 ns   22349 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:2048/prefixed-percent:90/null-percent:50        76974 ns   41473 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:2048/prefixed-percent:99/null-percent:0         48556 ns   22389 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:64/batch-size:2048/prefixed-percent:99/null-percent:50        77380 ns   40130 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:512/prefixed-percent:10/null-percent:0        17136 ns    9301 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:512/prefixed-percent:10/null-percent:50       19024 ns   11516 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:512/prefixed-percent:90/null-percent:0        22772 ns   11436 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:512/prefixed-percent:90/null-percent:50       26286 ns   13283 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:512/prefixed-percent:99/null-percent:0        23564 ns   11990 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:512/prefixed-percent:99/null-percent:50       26285 ns   13936 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:10/null-percent:0      101506 ns   49041 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:10/null-percent:50     112890 ns   60100 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:90/null-percent:0      127686 ns   54975 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:90/null-percent:50     141525 ns   65763 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:99/null-percent:0      129513 ns   55034 ns    
BM_DeltaDecodingArrowByteArray/max-string-length:1024/batch-size:2048/prefixed-percent:99/null-percent:50     152311 ns   66980 ns    
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:10                                           2810 ns    1850 ns    
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:90                                           3591 ns    2856 ns    
BM_DeltaDecodingFLBA/type-length:2/batch-size:512/prefixed-percent:99                                           3616 ns    3046 ns    
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:10                                         11025 ns    6936 ns    
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:90                                         15660 ns   11435 ns    
BM_DeltaDecodingFLBA/type-length:2/batch-size:2048/prefixed-percent:99                                         15891 ns   11964 ns    
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:10                                          2823 ns    1936 ns    
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:90                                          4334 ns    3589 ns    
BM_DeltaDecodingFLBA/type-length:16/batch-size:512/prefixed-percent:99                                          4491 ns    3764 ns    
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:10                                        10575 ns    7494 ns    
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:90                                        18031 ns   14942 ns    
BM_DeltaDecodingFLBA/type-length:16/batch-size:2048/prefixed-percent:99                                        19600 ns   16668 ns    
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:10                                      3144 ns    2487 ns    
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:90                                      4104 ns    3000 ns    
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:512/prefixed-percent:99                                      4256 ns    3025 ns    
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:10                                    12340 ns    9668 ns    
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:90                                    16679 ns   12125 ns    
BM_DeltaDecodingDenseFLBA/type-length:2/batch-size:2048/prefixed-percent:99                                    17299 ns   12972 ns    
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:10                                     3003 ns    2573 ns    
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:90                                     4586 ns    3405 ns    
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:512/prefixed-percent:99                                     4714 ns    3495 ns    
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:10                                   11964 ns    9921 ns    
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:90                                   19559 ns   13076 ns    
BM_DeltaDecodingDenseFLBA/type-length:16/batch-size:2048/prefixed-percent:99                                   20968 ns   14261 ns    

@github-actions github-actions Bot added awaiting review Awaiting review and removed awaiting review Awaiting review awaiting committer review Awaiting committer review labels Oct 26, 2026
@adamreeve

Copy link
Copy Markdown
Contributor

I made a visual representation of the benchmark results. The speed ups in the ArrowByteArray benchmarks are quite significant:

marcin-results

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants