Speedup CleanFilter by transferring data in chunks of 8k

Transferring data byte per byte is slow, running add with CleanFilter on
a 2.9MB file takes 20 seconds. Using a buffer of 8k shrinks this time to
70ms.

Change-Id: I3bc2d8c11fe6cfaffcc99dc2a00643e01ac4e9cc
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
Matthias Sohn 2016-10-24 13:26:58 +02:00
parent d1bc809cce
commit 6dea5ec823
1 changed files with 6 additions and 5 deletions

View File

@ -141,11 +141,12 @@ public CleanFilter(Repository db, InputStream in, OutputStream out)
public int run() throws IOException {
try {
int b = in.read();
if (b != -1) {
dOut.write(b);
size++;
return 1;
byte[] buf = new byte[8192];
int length = in.read(buf);
if (length != -1) {
dOut.write(buf, 0, length);
size += length;
return length;
} else {
dOut.close();
tmpOut.close();