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: issues-unsubscr...@lucene.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org