summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2019-02-11 09:56:15 +0100
committerJürg Billeter <j@bitron.ch>2019-02-12 06:52:07 +0100
commit8b9e1d24a6210bc0945f8c39f1dd8be42b9ca53b (patch)
treed5d4de215fd0cbec5bb0997ca185160d77443eb1
parenta7aed65a09a96ee242a0a0cc60d8dadd2dfc8664 (diff)
downloadbuildstream-8b9e1d24a6210bc0945f8c39f1dd8be42b9ca53b.tar.gz
_cas/cascache.py: Increase buffer size in add_object()
Increasing buffer size from 4 kB to 64 kB speeds up read() bandwidth by factor 4, according to a very simple benchmark.
-rw-r--r--buildstream/_cas/cascache.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/buildstream/_cas/cascache.py b/buildstream/_cas/cascache.py
index 5a6251815..9d7a121f4 100644
--- a/buildstream/_cas/cascache.py
+++ b/buildstream/_cas/cascache.py
@@ -35,6 +35,8 @@ from .._exceptions import CASCacheError
from .casremote import BlobNotFound, _CASBatchRead, _CASBatchUpdate
+_BUFFER_SIZE = 65536
+
# A CASCache manages a CAS repository as specified in the Remote Execution API.
#
@@ -371,7 +373,7 @@ class CASCache():
with contextlib.ExitStack() as stack:
if path is not None and link_directly:
tmp = stack.enter_context(open(path, 'rb'))
- for chunk in iter(lambda: tmp.read(4096), b""):
+ for chunk in iter(lambda: tmp.read(_BUFFER_SIZE), b""):
h.update(chunk)
else:
tmp = stack.enter_context(utils._tempnamedfile(dir=self.tmpdir))
@@ -380,7 +382,7 @@ class CASCache():
if path:
with open(path, 'rb') as f:
- for chunk in iter(lambda: f.read(4096), b""):
+ for chunk in iter(lambda: f.read(_BUFFER_SIZE), b""):
h.update(chunk)
tmp.write(chunk)
else: