diff options
Diffstat (limited to 'lib/spack/external/archspec/cpu/microarchitecture.py')
-rw-r--r-- | lib/spack/external/archspec/cpu/microarchitecture.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/spack/external/archspec/cpu/microarchitecture.py b/lib/spack/external/archspec/cpu/microarchitecture.py index fdc7707fda..954242736b 100644 --- a/lib/spack/external/archspec/cpu/microarchitecture.py +++ b/lib/spack/external/archspec/cpu/microarchitecture.py @@ -79,14 +79,18 @@ class Microarchitecture: self.features = features self.compilers = compilers self.generation = generation + # Cache the ancestor computation + self._ancestors = None @property def ancestors(self): """All the ancestors of this microarchitecture.""" - value = self.parents[:] - for parent in self.parents: - value.extend(a for a in parent.ancestors if a not in value) - return value + if self._ancestors is None: + value = self.parents[:] + for parent in self.parents: + value.extend(a for a in parent.ancestors if a not in value) + self._ancestors = value + return self._ancestors def _to_set(self): """Returns a set of the nodes in this microarchitecture DAG.""" |