diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2020-12-19 16:07:22 +0100 |
---|---|---|
committer | Tamara Dahlgren <dahlgren1@llnl.gov> | 2021-02-17 17:07:28 -0800 |
commit | a4066a52be6efa1f28b39eab4450f2b4f1136baa (patch) | |
tree | d2c2853bd9ba18066751b3a177edba2274ad1453 | |
parent | 18c5f10ae75e80880189d441b7aad6721c566761 (diff) | |
download | spack-a4066a52be6efa1f28b39eab4450f2b4f1136baa.tar.gz spack-a4066a52be6efa1f28b39eab4450f2b4f1136baa.tar.bz2 spack-a4066a52be6efa1f28b39eab4450f2b4f1136baa.tar.xz spack-a4066a52be6efa1f28b39eab4450f2b4f1136baa.zip |
asp: memoize the list of all target_specs to speed-up setup phase (#20473)
* asp: memoize the list of all target_specs to speed-up setup phase
* asp: memoize using a cache per solver object
-rw-r--r-- | lib/spack/spack/solver/asp.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 8ab0809ca8..87536570c6 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -497,6 +497,9 @@ class SpackSolverSetup(object): # id for dummy variables self.card = 0 + # Caches to optimize the setup phase of the solver + self.target_specs_cache = None + def pkg_version_rules(self, pkg): """Output declared versions of a package. @@ -910,10 +913,14 @@ class SpackSolverSetup(object): def preferred_targets(self, pkg_name): key_fn = spack.package_prefs.PackagePrefs(pkg_name, 'target') - target_specs = [ - spack.spec.Spec('target={0}'.format(target_name)) - for target_name in archspec.cpu.TARGETS - ] + + if not self.target_specs_cache: + self.target_specs_cache = [ + spack.spec.Spec('target={0}'.format(target_name)) + for target_name in archspec.cpu.TARGETS + ] + + target_specs = self.target_specs_cache preferred_targets = [x for x in target_specs if key_fn(x) < 0] if not preferred_targets: return |