original-brownbear opened a new pull request, #13901:
URL: https://github.com/apache/lucene/pull/13901
Sam as #13892 but much simpler. Almost exclusively mechanical moving of
fields to a shared parent and obvious deduplication. The only exceptions being
the introduction of an array summing utility method and the removal of some
irrelevant conditionals in `canReuse` (a few of those flags were never used in
logic so we can reuse a wider range here).
This comes with some mild but statistically significant performance boosts:
```
AndHighHigh 35.85 (7.8%) 35.12
(6.9%) -2.0% ( -15% - 13%) 0.222
OrHighNotLow 241.37 (7.4%) 236.75
(6.4%) -1.9% ( -14% - 12%) 0.215
MedTerm 252.90 (7.9%) 248.28
(7.5%) -1.8% ( -15% - 14%) 0.289
HighTerm 213.40 (8.4%) 209.61
(8.3%) -1.8% ( -17% - 16%) 0.343
OrHighHigh 20.41 (8.8%) 20.05
(8.0%) -1.8% ( -17% - 16%) 0.347
OrHighNotMed 176.86 (7.1%) 174.01
(6.4%) -1.6% ( -14% - 12%) 0.288
AndHighMed 78.70 (5.4%) 77.65
(4.8%) -1.3% ( -10% - 9%) 0.242
OrHighMed 78.23 (4.7%) 77.41
(4.8%) -1.0% ( -10% - 8%) 0.323
OrHighNotHigh 182.18 (6.9%) 180.33
(6.3%) -1.0% ( -13% - 13%) 0.492
PKLookup 157.92 (4.2%) 157.02
(4.2%) -0.6% ( -8% - 8%) 0.539
BrowseDayOfYearSSDVFacets 6.15 (7.8%) 6.12
(7.7%) -0.5% ( -14% - 16%) 0.754
BrowseMonthSSDVFacets 6.37 (6.7%) 6.34
(7.9%) -0.5% ( -14% - 15%) 0.760
LowTerm 375.27 (3.7%) 373.44
(3.7%) -0.5% ( -7% - 7%) 0.558
Prefix3 97.84 (3.0%) 97.46
(2.9%) -0.4% ( -6% - 5%) 0.559
OrNotHighHigh 203.94 (6.1%) 203.17
(5.5%) -0.4% ( -11% - 11%) 0.771
LowSpanNear 53.66 (3.3%) 53.46
(4.5%) -0.4% ( -7% - 7%) 0.672
OrHighLow 425.07 (2.3%) 423.51
(2.7%) -0.4% ( -5% - 4%) 0.506
BrowseMonthTaxoFacets 4.89 (0.4%) 4.88
(2.6%) -0.3% ( -3% - 2%) 0.447
Wildcard 39.55 (3.3%) 39.48
(3.3%) -0.2% ( -6% - 6%) 0.813
AndHighMedDayTaxoFacets 39.61 (1.9%) 39.55
(2.5%) -0.2% ( -4% - 4%) 0.758
OrNotHighLow 490.40 (1.5%) 489.88
(1.5%) -0.1% ( -3% - 2%) 0.749
TermDTSort 93.70 (3.8%) 93.69
(3.5%) -0.0% ( -7% - 7%) 0.983
Respell 41.70 (1.3%) 41.72
(1.7%) 0.1% ( -2% - 3%) 0.880
Fuzzy1 28.73 (3.1%) 28.75
(2.8%) 0.1% ( -5% - 6%) 0.937
BrowseRandomLabelSSDVFacets 4.20 (4.8%) 4.21
(4.5%) 0.1% ( -8% - 9%) 0.916
OrNotHighMed 186.46 (3.8%) 186.73
(3.1%) 0.1% ( -6% - 7%) 0.852
MedSloppyPhrase 8.16 (5.0%) 8.18
(4.6%) 0.2% ( -9% - 10%) 0.878
HighSpanNear 10.94 (3.8%) 10.96
(5.7%) 0.2% ( -8% - 10%) 0.853
Fuzzy2 63.72 (1.1%) 63.86
(1.2%) 0.2% ( -1% - 2%) 0.379
HighIntervalsOrdered 9.75 (6.3%) 9.78
(6.3%) 0.3% ( -11% - 13%) 0.842
IntNRQ 10.90 (3.0%) 10.93
(2.4%) 0.3% ( -4% - 5%) 0.605
AndHighLow 652.14 (2.5%) 654.47
(2.4%) 0.4% ( -4% - 5%) 0.516
HighTermMonthSort 565.94 (1.4%) 567.99
(1.5%) 0.4% ( -2% - 3%) 0.257
OrHighMedDayTaxoFacets 5.39 (2.9%) 5.41
(2.9%) 0.4% ( -5% - 6%) 0.572
AndHighHighDayTaxoFacets 7.05 (3.7%) 7.08
(4.1%) 0.4% ( -7% - 8%) 0.630
BrowseDateSSDVFacets 1.32 (6.9%) 1.32
(5.0%) 0.6% ( -10% - 13%) 0.662
HighTermDayOfYearSort 109.69 (2.7%) 110.49
(2.9%) 0.7% ( -4% - 6%) 0.238
LowIntervalsOrdered 7.51 (5.0%) 7.57
(5.2%) 0.8% ( -8% - 11%) 0.495
LowPhrase 130.41 (2.1%) 131.44
(1.8%) 0.8% ( -3% - 4%) 0.070
HighTermTitleSort 16.37 (1.2%) 16.50
(1.9%) 0.8% ( -2% - 3%) 0.021
BrowseRandomLabelTaxoFacets 4.83 (21.7%) 4.88
(22.6%) 0.9% ( -35% - 57%) 0.850
HighTermTitleBDVSort 7.37 (2.8%) 7.44
(3.3%) 0.9% ( -5% - 7%) 0.172
MedIntervalsOrdered 23.60 (5.6%) 23.84
(4.4%) 1.0% ( -8% - 11%) 0.357
MedTermDayTaxoFacets 24.86 (3.5%) 25.30
(3.6%) 1.8% ( -5% - 9%) 0.026
LowSloppyPhrase 17.80 (1.8%) 18.14
(2.1%) 1.9% ( -2% - 5%) 0.000
BrowseDateTaxoFacets 5.60 (25.6%) 5.71
(26.3%) 1.9% ( -39% - 72%) 0.739
HighPhrase 50.13 (1.9%) 51.11
(1.5%) 1.9% ( -1% - 5%) 0.000
BrowseDayOfYearTaxoFacets 5.71 (26.9%) 5.82
(27.9%) 2.0% ( -41% - 77%) 0.746
HighSloppyPhrase 11.70 (2.6%) 11.96
(2.7%) 2.2% ( -2% - 7%) 0.000
MedPhrase 13.49 (2.5%) 13.88
(2.0%) 2.9% ( -1% - 7%) 0.000
MedSpanNear 14.99 (1.7%) 15.64
(1.9%) 4.4% ( 0% - 8%) 0.000
```
It's a little hard to attribute these to a single change, but likely the
extremely hot (almost 1% of the runtime for the wikimedium benchmark run)
sum-computation compiles much better now that it lives in it's own method
without field access than before when it would update a field in a loop (which
I believe the compiler will not optimize away in current Java implementations).
--
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]