I'm testing the performance of some indexing code and noticed that
NormsWriter.flush() calls IndexOutput.writeByte(defaultNorm) in a loop,
writing the same norm every time (lines: 139-140, 157-158, 162-163).

In the run I've spotted it, it occurs few thousands of times (I mean few
thousands of writeByte calls).

I was thinking that if we had writeByte(byte b, int lenght) in IndexOutput,
we can call it once and handle it effeciently where possible. For
back-compat, the default impl would just be looping and calling
writeByte(b), but for others, like BufferedIndexOutout, this could be
filling the array with b, length times. We won't use System.arraycopy which
is faster, but won't call thousands of times to writeByte either.

What do you think?

Shai

Reply via email to