costin opened a new pull request, #16285:
URL: https://github.com/apache/lucene/pull/16285
GCD- and delta-encoded multi-value SortedNumericDocValues decode every
packed value during range evaluation. This transforms query bounds into the
encoded domain and compares raw values directly, matching the recipe used for
single-value NumericDocValues.
Uses the same approach as #16160 (the same utility methods are used, will be
removed once that PR gets merged)
### Benchmark
SortedNumericGcdRangeIntoBitSetBenchmark, 1M docs, JDK 25.0.3.
### AMD EPYC 7R32 (c5a.2xlarge) — AVX2, 256-bit
| cardinality | encoding | selectivity | baseline (ops/s) | candidate
(ops/s) | ratio |
|---|---|---:|---:|---:|---:|
| 3 | delta_only | 0.01 | 71.5 | 86.4 | **1.21x** |
| 3 | delta_only | 0.1 | 67.3 | 80.8 | **1.20x** |
| 3 | delta_only | 0.5 | 69.2 | 84.2 | **1.22x** |
| 3 | gcd_1000 | 0.01 | 69.7 | 74.7 | **1.07x** |
| 3 | gcd_1000 | 0.1 | 64.1 | 80.7 | **1.26x** |
| 3 | gcd_1000 | 0.5 | 64.6 | 68.9 | **1.07x** |
| 3 | gcd_100_delta | 0.01 | 69.0 | 85.9 | **1.24x** |
| 3 | gcd_100_delta | 0.1 | 71.8 | 81.1 | **1.13x** |
| 3 | gcd_100_delta | 0.5 | 72.0 | 71.3 | 0.99x |
| 5 | delta_only | 0.01 | 72.0 | 79.2 | **1.10x** |
| 5 | delta_only | 0.1 | 59.0 | 68.5 | **1.16x** |
| 5 | delta_only | 0.5 | 68.3 | 80.1 | **1.17x** |
| 5 | gcd_1000 | 0.01 | 47.7 | 79.9 | **1.68x** |
| 5 | gcd_1000 | 0.1 | 47.3 | 68.7 | **1.45x** |
| 5 | gcd_1000 | 0.5 | 58.2 | 79.5 | **1.37x** |
| 5 | gcd_100_delta | 0.01 | 48.4 | 73.2 | **1.51x** |
| 5 | gcd_100_delta | 0.1 | 47.6 | 68.4 | **1.44x** |
| 5 | gcd_100_delta | 0.5 | 58.0 | 67.7 | **1.17x** |
### Intel Xeon 8375C (c6i.2xlarge) — AVX-512, 512-bit
| cardinality | encoding | selectivity | baseline (ops/s) | candidate
(ops/s) | ratio |
|---|---|---:|---:|---:|---:|
| 3 | delta_only | 0.01 | 86.3 | 93.0 | **1.08x** |
| 3 | delta_only | 0.1 | 80.1 | 84.0 | 1.05x |
| 3 | delta_only | 0.5 | 84.6 | 92.2 | **1.09x** |
| 3 | gcd_1000 | 0.01 | 74.9 | 92.9 | **1.24x** |
| 3 | gcd_1000 | 0.1 | 76.3 | 86.3 | **1.13x** |
| 3 | gcd_1000 | 0.5 | 78.9 | 88.9 | **1.13x** |
| 3 | gcd_100_delta | 0.01 | 74.9 | 93.1 | **1.24x** |
| 3 | gcd_100_delta | 0.1 | 76.1 | 86.4 | **1.13x** |
| 3 | gcd_100_delta | 0.5 | 72.2 | 89.4 | **1.24x** |
| 5 | delta_only | 0.01 | 78.9 | 85.4 | **1.08x** |
| 5 | delta_only | 0.1 | 78.1 | 79.4 | 1.02x |
| 5 | delta_only | 0.5 | 81.8 | 84.6 | 1.03x |
| 5 | gcd_1000 | 0.01 | 48.6 | 86.1 | **1.77x** |
| 5 | gcd_1000 | 0.1 | 47.6 | 79.0 | **1.66x** |
| 5 | gcd_1000 | 0.5 | 56.4 | 83.4 | **1.48x** |
| 5 | gcd_100_delta | 0.01 | 48.7 | 83.3 | **1.71x** |
| 5 | gcd_100_delta | 0.1 | 47.9 | 79.1 | **1.65x** |
| 5 | gcd_100_delta | 0.5 | 56.6 | 84.3 | **1.49x** |
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]