diff options
author | Jürg Billeter <j@bitron.ch> | 2019-02-11 09:56:15 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2019-02-11 15:31:39 +0100 |
commit | 649736bc628923d6572298dcb396ed913f602a70 (patch) | |
tree | 6470756829f7ee37110c0aac80307dfa7d963bca | |
parent | aabdf1b92bec1eb6c3b53c046e7be218443ac795 (diff) | |
download | buildstream-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.py | 6 |
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: |