summaryrefslogtreecommitdiffstats
path: root/lib/bb/taskdata.py
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2006-09-14 22:17:29 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2006-09-14 22:17:29 +0000
commit567c057c897e7ff2450b734a02e65f4418263206 (patch)
tree6d8c9692611cf5346c4e1db3a41fa97ebfc6fc2e /lib/bb/taskdata.py
parent2a5ebb0c674cd6e948ee6d0186e0c863b6c9cf05 (diff)
downloadbitbake-567c057c897e7ff2450b734a02e65f4418263206.tar.gz
taskqueue.py: Add a small cache for task ids for a big speed improvement
Diffstat (limited to 'lib/bb/taskdata.py')
-rw-r--r--lib/bb/taskdata.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py
index 8209ff5d8..42414f000 100644
--- a/lib/bb/taskdata.py
+++ b/lib/bb/taskdata.py
@@ -39,6 +39,8 @@ class TaskData:
self.tasks_fnid = []
self.tasks_name = []
self.tasks_tdepends = []
+ # Cache to speed up task ID lookups
+ self.tasks_lookup = {}
self.depids = {}
self.rdepids = {}
@@ -112,19 +114,21 @@ class TaskData:
"""
fnid = self.getfn_id(fn)
- fnids = self.matches_in_list(self.tasks_fnid, fnid)
- names = self.matches_in_list(self.tasks_name, task)
-
- listid = self.both_contain(fnids, names)
-
- if listid is not None:
- return listid
+ if fnid in self.tasks_lookup:
+ if task in self.tasks_lookup[fnid]:
+ return self.tasks_lookup[fnid][task]
self.tasks_name.append(task)
self.tasks_fnid.append(fnid)
self.tasks_tdepends.append([])
- return len(self.tasks_name)-1
+ listid = len(self.tasks_name) - 1
+
+ if fnid not in self.tasks_lookup:
+ self.tasks_lookup[fnid] = {}
+ self.tasks_lookup[fnid][task] = listid
+
+ return listid
def add_tasks(self, fn, dataCache):
"""