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-11 15:31:39 +0100
commit649736bc628923d6572298dcb396ed913f602a70 (patch)
tree6470756829f7ee37110c0aac80307dfa7d963bca
parentaabdf1b92bec1eb6c3b53c046e7be218443ac795 (diff)
downloadbuildstream-juerg/buffer-size.tar.gz
_cas/cascache.py: Increase buffer size in add_object()juerg/buffer-size
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: