diff options
author | Peter Kjellerstedt <peter.kjellerstedt@axis.com> | 2020-01-07 23:08:57 +0100 |
---|---|---|
committer | Armin Kuster <akuster808@gmail.com> | 2020-01-25 08:14:18 -0800 |
commit | aa770081d7d3ff678b18117a4b4e9b3da09b72be (patch) | |
tree | 11b20c8cd52a4de3b63288162b6d96e5aced1b62 | |
parent | 4ce50bbd34eefeabfeca89a6a66c71598d3c58f6 (diff) | |
download | bitbake-aa770081d7d3ff678b18117a4b4e9b3da09b72be.tar.gz |
cooker: Keep track of watched files using a set instead of a list
When there are many watched files, keeping track of them using lists
is suboptimal. Using sets improves the performance considerably.
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 1e96df260e47d160dbd36bfc92c31ef06266f662)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
-rw-r--r-- | lib/bb/cooker.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index a97bafdca..77d18a5d0 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -171,8 +171,8 @@ class BBCooker: bb.debug(1, "BBCooker pyinotify1 %s" % time.time()) sys.stdout.flush() - self.configwatcher.bbseen = [] - self.configwatcher.bbwatchedfiles = [] + self.configwatcher.bbseen = set() + self.configwatcher.bbwatchedfiles = set() self.confignotifier = pyinotify.Notifier(self.configwatcher, self.config_notifications) bb.debug(1, "BBCooker pyinotify2 %s" % time.time()) sys.stdout.flush() @@ -182,8 +182,8 @@ class BBCooker: self.watcher = pyinotify.WatchManager() bb.debug(1, "BBCooker pyinotify3 %s" % time.time()) sys.stdout.flush() - self.watcher.bbseen = [] - self.watcher.bbwatchedfiles = [] + self.watcher.bbseen = set() + self.watcher.bbwatchedfiles = set() self.notifier = pyinotify.Notifier(self.watcher, self.notifications) bb.debug(1, "BBCooker pyinotify complete %s" % time.time()) @@ -278,14 +278,14 @@ class BBCooker: if not watcher: watcher = self.watcher for i in deps: - watcher.bbwatchedfiles.append(i[0]) + watcher.bbwatchedfiles.add(i[0]) if dirs: f = i[0] else: f = os.path.dirname(i[0]) if f in watcher.bbseen: continue - watcher.bbseen.append(f) + watcher.bbseen.add(f) watchtarget = None while True: # We try and add watches for files that don't exist but if they did, would influence @@ -294,7 +294,7 @@ class BBCooker: try: watcher.add_watch(f, self.watchmask, quiet=False) if watchtarget: - watcher.bbwatchedfiles.append(watchtarget) + watcher.bbwatchedfiles.add(watchtarget) break except pyinotify.WatchManagerError as e: if 'ENOENT' in str(e): @@ -302,7 +302,7 @@ class BBCooker: f = os.path.dirname(f) if f in watcher.bbseen: break - watcher.bbseen.append(f) + watcher.bbseen.add(f) continue if 'ENOSPC' in str(e): providerlog.error("No space left on device or exceeds fs.inotify.max_user_watches?") |