ByteBuffer performance issue in Java 9?
Michael McCandless
lucene at mikemccandless.com
Mon Mar 13 15:43:34 UTC 2017
I reran the same test as before, this time using Lucene's NIOFSDirectory
(java.nio's FileChannel for positional reads).
There is still some slowdown, though a bit less than with MMapDirectory:
Task QPS base StdDev QPS comp
StdDev Pct diff
LowSloppyPhrase 9.12 (5.2%) 7.89
(3.6%) -13.5% ( -21% - -4%)
HighSloppyPhrase 6.25 (4.1%) 5.57
(3.3%) -10.8% ( -17% - -3%)
MedSloppyPhrase 4.29 (3.8%) 3.85
(3.0%) -10.1% ( -16% - -3%)
BrowseDayOfYearSSDVFacets 4.72 (8.8%) 4.32
(5.4%) -8.4% ( -20% - 6%)
BrowseMonthTaxoFacets 1.31 (2.9%) 1.20
(4.7%) -8.3% ( -15% - 0%)
BrowseDayOfYearTaxoFacets 1.17 (4.0%) 1.08
(4.1%) -7.7% ( -15% - 0%)
BrowseDateTaxoFacets 1.18 (4.0%) 1.09
(4.1%) -7.6% ( -15% - 0%)
BrowseMonthSSDVFacets 5.39 (4.3%) 4.98
(10.7%) -7.6% ( -21% - 7%)
HighTerm 29.47 (5.3%) 27.45
(4.2%) -6.9% ( -15% - 2%)
HighTermDayOfYearSort 14.24 (4.6%) 13.35
(5.5%) -6.3% ( -15% - 3%)
MedTerm 44.47 (4.0%) 42.02
(3.4%) -5.5% ( -12% - 1%)
OrHighNotLow 33.13 (5.0%) 31.39
(4.3%) -5.2% ( -13% - 4%)
OrHighLow 26.84 (4.2%) 25.49
(4.0%) -5.0% ( -12% - 3%)
HighPhrase 7.51 (5.4%) 7.17
(4.0%) -4.5% ( -13% - 5%)
Fuzzy2 51.32 (0.9%) 49.03
(1.2%) -4.5% ( -6% - -2%)
OrHighNotHigh 13.18 (3.5%) 12.64
(3.7%) -4.2% ( -10% - 3%)
IntNRQ 6.28 (6.3%) 6.03
(9.9%) -4.0% ( -18% - 12%)
OrHighNotMed 27.69 (2.9%) 26.65
(3.3%) -3.8% ( -9% - 2%)
Fuzzy1 42.32 (0.8%) 40.88
(1.1%) -3.4% ( -5% - -1%)
MedSpanNear 27.44 (2.4%) 26.57
(2.8%) -3.2% ( -8% - 2%)
OrNotHighHigh 17.58 (2.8%) 17.04
(3.3%) -3.1% ( -8% - 3%)
HighSpanNear 26.83 (2.2%) 26.03
(2.5%) -3.0% ( -7% - 1%)
Respell 49.07 (1.2%) 47.62
(0.8%) -3.0% ( -4% - 0%)
LowPhrase 31.19 (1.5%) 30.34
(1.2%) -2.7% ( -5% - 0%)
Wildcard 51.30 (4.8%) 49.93
(4.3%) -2.7% ( -11% - 6%)
LowSpanNear 31.05 (1.2%) 30.40
(1.5%) -2.1% ( -4% - 0%)
LowTerm 105.83 (1.1%) 103.78
(1.4%) -1.9% ( -4% - 0%)
OrNotHighMed 49.08 (1.8%) 48.16
(2.1%) -1.9% ( -5% - 2%)
OrHighMed 18.44 (5.8%) 18.09
(5.1%) -1.9% ( -12% - 9%)
AndHighHigh 21.22 (1.0%) 20.82
(1.3%) -1.9% ( -4% - 0%)
HighTermMonthSort 32.01 (3.9%) 31.43
(5.3%) -1.8% ( -10% - 7%)
OrHighHigh 12.89 (7.0%) 12.66
(6.0%) -1.8% ( -13% - 12%)
MedPhrase 24.09 (2.3%) 23.80
(2.2%) -1.2% ( -5% - 3%)
AndHighLow 447.74 (1.5%) 443.85
(1.7%) -0.9% ( -3% - 2%)
Prefix3 18.41 (6.8%) 18.28
(5.6%) -0.7% ( -12% - 12%)
OrNotHighLow 254.77 (1.4%) 254.59
(1.2%) -0.1% ( -2% - 2%)
AndHighMed 63.15 (1.5%) 63.47
(0.9%) 0.5% ( -1% - 3%)
PKLookup 347.80 (2.3%) 349.93
(2.1%) 0.6% ( -3% - 5%)
Mike McCandless
http://blog.mikemccandless.com
On Mon, Mar 13, 2017 at 10:16 AM, Michael McCandless <
lucene at mikemccandless.com> wrote:
> Hi Uwe,
>
> OK, I'll test with NIOFSDirectory as well ... that's a good idea.
>
> I do remember testing earlier Java 9 builds long ago, but I can't remember
> what the outcome was.
>
> Mike McCandless
>
> http://blog.mikemccandless.com
>
> On Mon, Mar 13, 2017 at 6:35 AM, Uwe Schindler <uschindler at apache.org>
> wrote:
>
>> Hi Andrew,
>>
>> yes that was my impression, too.
>>
>> Just for cross-checking: Mike, is it possible to also add a perf
>> comparison between Java 8 and Java 9 when using SimpleFSDirectory or
>> NIOFSDirectory (which are both FileChannel based since Java 7, the name is
>> just backwards-compatibility)? If we see a slowdown there (maybe even
>> larger) than it is not related to ByteBuffer positional/byte-wise reads and
>> there is a general performance issue somewhere else.
>>
>> > Right, but ByteBuffers were significantly rewritten for a significant
>> > performance *increase*. Any slowdown shows that something has gone
>> > very wrong indeed.
>>
>> That would be a pity, because of that we should check the above case with
>> non-mmap based, conventional index access. As far as I remember: at the
>> time when you announced the bytebuffer improvements we did some performance
>> measurements and were impressed by the speedup. I think Robert Muir did
>> something. Mike, do you know?
>>
>> Maybe we should check with a Java 9 preview build from that time. I know
>> that you can download older builds by changing the build number in the
>> download URL.
>>
>> Uwe
>>
>>
>
More information about the jdk9-dev
mailing list