aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jansa <Martin.Jansa@gmail.com>2023-02-14 13:25:54 +0100
committerMartin Jansa <Martin.Jansa@gmail.com>2023-02-15 10:26:17 +0100
commit8e6729612cd00267eb7e8066de493a8ee00b2a6c (patch)
treee8358aacf9b46f846ee7c40aa897230f81b7fcb4
parentcc1deaa99c0b852db640aceeb9d667f64f962bca (diff)
downloadbitbake-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.py6
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:"):