original-brownbear commented on code in PR #13543: URL: https://github.com/apache/lucene/pull/13543#discussion_r1667797299
########## lucene/core/src/java/org/apache/lucene/store/OutputStreamIndexOutput.java: ########## @@ -135,5 +135,19 @@ void writeLong(long i) throws IOException { BitUtil.VH_LE_LONG.set(buf, count, i); count += Long.BYTES; } + + @Override + public void write(int b) throws IOException { + // override single byte write to avoid synchronization overhead now that JEP374 removed biased + // locking + byte[] buffer = buf; + int count = this.count; + if (count >= buffer.length) { + super.write(b); + } else { + buffer[count] = (byte) b; + this.count = count + 1; + } + } Review Comment: I think this version is a bit faster (and maybe more than just a bit even depending on the calling code) by avoiding the (most of the time unnecessary) method call to `flushIfNeeded` (which itself does a bunch of field lookups). For single-byte operations this matters somewhat I believe. It also saves potentially unnecessary flush calls to the underlying stream, though those might be irrelevant since we should only be hitting a single stream (from file output stream) with a noop flush implementation here as far as I can tell. -- 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. To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org