diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2006-09-14 22:17:29 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2006-09-14 22:17:29 +0000 |
commit | 567c057c897e7ff2450b734a02e65f4418263206 (patch) | |
tree | 6d8c9692611cf5346c4e1db3a41fa97ebfc6fc2e /lib/bb/taskdata.py | |
parent | 2a5ebb0c674cd6e948ee6d0186e0c863b6c9cf05 (diff) | |
download | bitbake-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.py | 20 |
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): """ |