summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <daniel.silverstone@codethink.co.uk>2019-06-05 16:35:37 +0100
committerDaniel Silverstone <daniel.silverstone@codethink.co.uk>2019-06-05 16:35:37 +0100
commit26434f3e633abf297be0633352aebce5b591782b (patch)
treeb8e69d11a80620f09cd2b40487fff9e296f99bb9
parentc4b08c67edb9038cbc43b98f9ec675f7665f68ac (diff)
downloadbuildstream-danielsilverstone-ct/loader-depends-smearing.tar.gz
_loader: Add __slots__ to loadelement, meta*, and friendsdanielsilverstone-ct/loader-depends-smearing
Since these classes are basically named tuples, give them __slots__ to speed them up. Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
-rw-r--r--src/buildstream/_loader/loadelement.py15
-rw-r--r--src/buildstream/_loader/metaelement.py18
-rw-r--r--src/buildstream/_loader/metasource.py10
3 files changed, 43 insertions, 0 deletions
diff --git a/src/buildstream/_loader/loadelement.py b/src/buildstream/_loader/loadelement.py
index 9296acc50..abb29d228 100644
--- a/src/buildstream/_loader/loadelement.py
+++ b/src/buildstream/_loader/loadelement.py
@@ -51,12 +51,27 @@ class LoadElement():
# element (LoadElement): a LoadElement on which there is a dependency
# dep_type (str): the type of dependency this dependency link is
class Dependency:
+
+ __slots__ = ('element', 'dep_type')
+
def __init__(self, element, dep_type):
self.element = element
self.dep_type = dep_type
_counter = count()
+ __slots__ = (
+ 'node',
+ 'name',
+ 'full_name',
+ 'deps',
+ 'meta_done',
+ 'node_id',
+ 'dependencies',
+ '_loader',
+ '_dep_cache',
+ )
+
def __init__(self, node, filename, loader):
#
diff --git a/src/buildstream/_loader/metaelement.py b/src/buildstream/_loader/metaelement.py
index 45eb6f4d0..cda1c3434 100644
--- a/src/buildstream/_loader/metaelement.py
+++ b/src/buildstream/_loader/metaelement.py
@@ -22,6 +22,24 @@ from .. import _yaml
class MetaElement():
+ __slots__ = (
+ 'project',
+ 'name',
+ 'kind',
+ 'provenance',
+ 'sources',
+ 'config',
+ 'variables',
+ 'environment',
+ 'env_nocache',
+ 'public',
+ 'sandbox',
+ 'build_dependencies',
+ 'dependencies',
+ 'first_pass',
+ 'is_junction',
+ )
+
# MetaElement()
#
# An abstract object holding data suitable for constructing an Element
diff --git a/src/buildstream/_loader/metasource.py b/src/buildstream/_loader/metasource.py
index da2c0e292..5cf7dc7ba 100644
--- a/src/buildstream/_loader/metasource.py
+++ b/src/buildstream/_loader/metasource.py
@@ -20,6 +20,16 @@
class MetaSource():
+ __slots__ = (
+ 'element_name',
+ 'element_index',
+ 'element_kind',
+ 'kind',
+ 'config',
+ 'directory',
+ 'first_pass',
+ )
+
# MetaSource()
#
# An abstract object holding data suitable for constructing a Source