mikemccand commented on a change in pull request #973: LUCENE-9027: Use SIMD instructions to decode postings. URL: https://github.com/apache/lucene-solr/pull/973#discussion_r345755022
########## File path: lucene/core/src/java/org/apache/lucene/store/ByteBufferIndexInput.java ########## @@ -107,6 +122,24 @@ public final void readBytes(byte[] b, int offset, int len) throws IOException { } } + @Override + public void readLongs(ByteOrder byteOrder, long[] dst, int offset, int length) throws IOException { + try { + final int position = curBuf.position(); + guard.getLongs(curLongBufferViews[position & 0x07].position(position >>> 3), dst, offset, length); + if (byteOrder != ByteOrder.nativeOrder()) { + for (int i = offset, end = offset + length; i < end; ++i) { + dst[i] = Long.reverseBytes(dst[i]); + } + } + curBuf.position(position + (length << 3)); + } catch (BufferUnderflowException e) { + super.readLongs(byteOrder, dst, offset, length); Review comment: Hmm, how come we don't also do the `setCurBuf` here? It seems like we are falling back to the slow (`super.readLongs`) implementation always on the first `readLongs` call, but since that slow version will use `readByte` it will then initialize the `curLongBufferViews` for subsequent `readLongs` calls? ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org