summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2021-02-05 23:27:05 -0800
committerMassimiliano Culpo <massimiliano.culpo@gmail.com>2021-02-11 15:30:57 +0100
commit6fe931ccb1bfd9cbd17db167778517600b3857ce (patch)
tree1f183fb6ba17cee1840788e49084739cd11acd79 /lib
parent2fbc8caf86e99cd91f0cf4c77a568bba34c500bd (diff)
downloadspack-6fe931ccb1bfd9cbd17db167778517600b3857ce.tar.gz
spack-6fe931ccb1bfd9cbd17db167778517600b3857ce.tar.bz2
spack-6fe931ccb1bfd9cbd17db167778517600b3857ce.tar.xz
spack-6fe931ccb1bfd9cbd17db167778517600b3857ce.zip
spec performance: don't parse in from_node_dict
Constructing a spec from a name instead of setting name directly forces from_node_dict to call Spec.parse(), which is slow. Avoid this by using a zero-arg constructor and setting name directly.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/spec.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 06767d6c7d..985236bf6d 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -1786,10 +1786,12 @@ class Spec(object):
name = next(iter(node))
node = node[name]
- spec = Spec(name, full_hash=node.get('full_hash', None))
+ spec = Spec()
+ spec.name = name
spec.namespace = node.get('namespace', None)
spec._hash = node.get('hash', None)
spec._build_hash = node.get('build_hash', None)
+ spec._full_hash = node.get('full_hash', None)
if 'version' in node or 'versions' in node:
spec.versions = vn.VersionList.from_dict(node)