diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2023-02-14 13:25:54 +0100 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2023-02-15 10:26:17 +0100 |
commit | 8e6729612cd00267eb7e8066de493a8ee00b2a6c (patch) | |
tree | e8358aacf9b46f846ee7c40aa897230f81b7fcb4 | |
parent | cc1deaa99c0b852db640aceeb9d667f64f962bca (diff) | |
download | bitbake-contrib-jansa/2.0-siggen.tar.gz |
siggen: Replace still inefficient string concatenation with temporary arrayjansa/2.0-siggen
* in my test case for externalsrc with huge repo (380227 paths) this for
loop went down from 512s to 0.7s
* based on
https://stackoverflow.com/questions/75313204/correct-way-to-append-to-string-in-python
[YOCTO #14942]
Co-authored-by: Etienne Cordonnier <ecordonnier@snap.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-rw-r--r-- | lib/bb/siggen.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py index 870ae9a4c..ddb0b5370 100644 --- a/lib/bb/siggen.py +++ b/lib/bb/siggen.py @@ -333,11 +333,13 @@ class SignatureGeneratorBasic(SignatureGenerator): for dep in self.runtaskdeps[tid]: data += self.get_unihash(dep) + datalist = [] for (f, cs) in self.file_checksum_values[tid]: if cs: if "/./" in f: - data += "./" + f.split("/./")[1] - data += cs + datalist.extend(("./", f.split("/./")[1])) + datalist.append(cs) + data += "".join(datalist) if tid in self.taints: if self.taints[tid].startswith("nostamp:"): |