Hi,

ZipFile.Source.readFullyAt caps its calls to RandomAccessFile.readFully to
a maximum of 8192 bytes per call, like this:

int N = len;
> while (N > 0) {
>     int n = Math.min(BUF_SIZE, N);
>     zfile.readFully(buf, off, n);
>     off += n;
>     N -= n;
> }


I'm observing a ~10% speedup of the ZipFileOpen micro when I replace the
above with simply:

zfile.seek(pos);
> zfile.readFully(buf, off, len);


Does anyone know why readFullyAt is implemented this way? Is it trying to
limit blocking time somehow? Is there some hidden buffering deeper down I'm
not seeing?

If this is safe to remove, I'm happy to submit a PR. But code like this is
usually there for a reason..?

Cheers,
Eiirk.

Reply via email to