aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Damien Martin-Guillerez <dmarting@google.com>2015-07-15 10:36:17 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-07-16 08:13:54 +0000
commit3b781160004fdd8703c377a81a680faa1eb5326f (patch)
tree26f66a112ddbda18d90c61f41a349bdc157432ad
parenta4211f3c1a86843193df8d665406d9e32d0b8f01 (diff)
Use WritableByteChannel for HttpDownloader
Using WritableByteChannel#write instead of OutputStream#write apparently speeds up the download. I don't see any way to make sure it does but on my machine I get normal download speed with that change (compared to the previous version). -- Change-Id: I77db80ecd199efe2a5a9673ca0ad0bbcaaf74e56 Reviewed-on: https://bazel-review.googlesource.com/#/c/1630/ MOS_MIGRATED_REVID=98296070
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/HttpDownloader.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpDownloader.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpDownloader.java
index 020c0bd134..d01b91870b 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpDownloader.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpDownloader.java
@@ -29,6 +29,7 @@ import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
+import java.nio.channels.WritableByteChannel;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
@@ -72,12 +73,13 @@ public class HttpDownloader {
try (OutputStream outputStream = destination.getOutputStream()) {
ReadableByteChannel rbc = getChannel(url);
+ WritableByteChannel obc = Channels.newChannel(outputStream);
ByteBuffer byteBuffer = ByteBuffer.allocate(BUFFER_SIZE);
while ((currentBytes = rbc.read(byteBuffer)) > 0) {
totalBytes.addAndGet(currentBytes);
byteBuffer.flip();
while (byteBuffer.hasRemaining()) {
- outputStream.write(byteBuffer.get());
+ obc.write(byteBuffer);
}
byteBuffer.flip();
}