diff options
author | Damien Martin-Guillerez <dmarting@google.com> | 2015-07-15 10:36:17 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2015-07-16 08:13:54 +0000 |
commit | 3b781160004fdd8703c377a81a680faa1eb5326f (patch) | |
tree | 26f66a112ddbda18d90c61f41a349bdc157432ad | |
parent | a4211f3c1a86843193df8d665406d9e32d0b8f01 (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.java | 4 |
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(); } |