Skip to content

_yaml.py: Implement `get()` for `ChainMap`

Description

The ChainMap in Python's core implements .get() as:

def get(self, key, default=None):
    return self[key] if key in self else default

This is a use of __contains__ followed by __getitem__ if present. This is expensive. As such, let's correct that.

This change improves performance of bst build pre-scheduler by approximately 40s in my test case (nearly 50% of node_get()'s total runtime cost)

Changes proposed in this merge request:

  • Implement .get() in _yaml.py::ChainMap

This merge request, when approved, will improve matters for #466 (closed)


Edited by Daniel Silverstone

Merge request reports