You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Robert Muir (Jira)" <ji...@apache.org> on 2020/08/25 02:19:00 UTC

[jira] [Created] (LUCENE-9480) investigate slow DataInput.skipBytes

Robert Muir created LUCENE-9480:
-----------------------------------

             Summary: investigate slow DataInput.skipBytes
                 Key: LUCENE-9480
                 URL: https://issues.apache.org/jira/browse/LUCENE-9480
             Project: Lucene - Core
          Issue Type: Improvement
            Reporter: Robert Muir


Currently DataInput has skipBytes(), but IndexInput also adds seek(). 

There isn't a clear reason about the differences in the two methods: why would you choose one over the other?

It causes some performance issues: for example the default implementation actually reads bytes into a byte array and throws everything away. This is really silly for MMapDirectory: skipping bytes should only be a glorified {{+=}}. 

So when I look at latest LUCENE-9447 patch, I can't help but think a ton of waste is happening:

* Maybe skipBytes() is only used because the stored fields compressor interface happens to take DataInput? Should it take IndexInput instead?
* Should skipBytes() be overridden by MMapDirectory rather than delegating to super? doing real reads and byte array copies isn't free. It should be a {{+=}} with single bounds check.
* Should we revisit having DataInput vs IndexInput at all? Maybe they should be collapsed into one thing?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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