From 6dea5ec823c861de0a1490b2c6f9573e329e7e44 Mon Sep 17 00:00:00 2001 From: Matthias Sohn Date: Mon, 24 Oct 2016 13:26:58 +0200 Subject: [PATCH] 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 --- .../src/org/eclipse/jgit/lfs/CleanFilter.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java index f7b55e579..f7ad68974 100644 --- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java +++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/CleanFilter.java @@ -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();