Robert Muir created LUCENE-5722:
-----------------------------------

             Summary: Speed up MMapDirectory.seek()
                 Key: LUCENE-5722
                 URL: https://issues.apache.org/jira/browse/LUCENE-5722
             Project: Lucene - Core
          Issue Type: Bug
            Reporter: Robert Muir


For traditional lucene access which is mostly sequential, occasional advance(), 
I think this method gets drowned out in noise.

But for access like docvalues, its important. Unfortunately seek() is complex 
today because of mapping multiple buffers.

However, the very common case is that only one map is used for a given clone or 
slice.

When there is the possibility to use only a single mapped buffer, we should 
instead take advantage of ByteBuffer.slice(), which will adjust the internal 
mmap address and remove the offset calculation. furthermore we don't need the 
shift/mask or even the negative check, as they are then all handled with the 
ByteBuffer api: seek is a one-liner (with try/catch of course to convert 
exceptions).

This makes docvalues access 20% faster, I havent tested conjunctions or 
anyhting like that.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to