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-12 06:52:07 +0100 |
commit | 8b9e1d24a6210bc0945f8c39f1dd8be42b9ca53b (patch) | |
tree | d5d4de215fd0cbec5bb0997ca185160d77443eb1 | |
parent | a7aed65a09a96ee242a0a0cc60d8dadd2dfc8664 (diff) | |
download | buildstream-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.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: |