lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Muir (JIRA)" <j...@apache.org>
Subject [jira] Updated: (LUCENE-2723) Speed up Lucene's low level bulk postings read API
Date Mon, 20 Dec 2010 21:43:01 GMT

     [ https://issues.apache.org/jira/browse/LUCENE-2723?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Robert Muir updated LUCENE-2723:
--------------------------------

    Attachment: LUCENE-2723_bulkvint.patch

attached is a silly codec, but i think useful when benchmarking:
an intblock codec that encodes blocks with vint, with a single vint header
containing the uncompressed length in bytes.

I think this is useful because when comparing StandardCodec to FixedIntBlockCodecs such as
FOR/PFOR, and also considering the bulk read API, there is a lot of variables in play... especially
different I/O access patterns.

so I think we should try to separate some of these variables out, and a FixedIntBlockCodec
that uses Vint is useful to having a real "baseline" when looking at other compression algorithms,
because FixedIntBlock is very different from standard already.

here's a comparison between Standard (bulkpostings branch) and VintBlock (bulkpostings branch):
I used mmap on windows (but also tried simplefs with similar results)

anyway, i think its interesting enough for future benchmarking i'd like to commit to the branch.
we can
later delete this codec or simply change MockFixedIntBlock to work like this one.

||Query||QPS Standard||QPS BulkVInt||Pct diff||||
|u*d|12.43|10.55|{color:red}-15.1%{color}|
|un*d|45.05|39.70|{color:red}-11.9%{color}|
|"unit state"~3|3.75|3.43|{color:red}-8.5%{color}|
|+nebraska +state|69.97|65.92|{color:red}-5.8%{color}|
|spanNear([unit, state], 10, true)|3.01|2.92|{color:red}-2.7%{color}|
|spanFirst(unit, 5)|11.39|11.35|{color:red}-0.4%{color}|
|"unit state"|5.99|5.99|{color:red}-0.1%{color}|
|united~1.0|9.27|9.70|{color:green}4.6%{color}|
|united~2.0|1.95|2.04|{color:green}4.9%{color}|
|unit~1.0|5.89|6.34|{color:green}7.6%{color}|
|unit~2.0|5.76|6.20|{color:green}7.8%{color}|
|unit state|7.00|8.05|{color:green}15.0%{color}|
|+unit +state|9.11|11.09|{color:green}21.7%{color}|
|unit*|23.28|29.50|{color:green}26.7%{color}|
|uni*|13.29|16.93|{color:green}27.4%{color}|
|state|21.43|28.79|{color:green}34.3%{color}|



> Speed up Lucene's low level bulk postings read API
> --------------------------------------------------
>
>                 Key: LUCENE-2723
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2723
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Index
>            Reporter: Michael McCandless
>            Assignee: Michael McCandless
>             Fix For: 4.0
>
>         Attachments: LUCENE-2723-termscorer.patch, LUCENE-2723-termscorer.patch, LUCENE-2723-termscorer.patch,
LUCENE-2723.patch, LUCENE-2723.patch, LUCENE-2723.patch, LUCENE-2723.patch, LUCENE-2723.patch,
LUCENE-2723_bulkvint.patch, LUCENE-2723_facetPerSeg.patch, LUCENE-2723_facetPerSeg.patch,
LUCENE-2723_openEnum.patch, LUCENE-2723_termscorer.patch, LUCENE-2723_wastedint.patch
>
>
> Spinoff from LUCENE-1410.
> The flex DocsEnum has a simple bulk-read API that reads the next chunk
> of docs/freqs.  But it's a poor fit for intblock codecs like FOR/PFOR
> (from LUCENE-1410).  This is not unlike sucking coffee through those
> tiny plastic coffee stirrers they hand out airplanes that,
> surprisingly, also happen to function as a straw.
> As a result we see no perf gain from using FOR/PFOR.
> I had hacked up a fix for this, described at in my blog post at
> http://chbits.blogspot.com/2010/08/lucene-performance-with-pfordelta-codec.html
> I'm opening this issue to get that work to a committable point.
> So... I've worked out a new bulk-read API to address performance
> bottleneck.  It has some big changes over the current bulk-read API:
>   * You can now also bulk-read positions (but not payloads), but, I
>      have yet to cutover positional queries.
>   * The buffer contains doc deltas, not absolute values, for docIDs
>     and positions (freqs are absolute).
>   * Deleted docs are not filtered out.
>   * The doc & freq buffers need not be "aligned".  For fixed intblock
>     codecs (FOR/PFOR) they will be, but for varint codecs (Simple9/16,
>     Group varint, etc.) they won't be.
> It's still a work in progress...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message