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