WIP: Some more microoptimisations
Description
This branch contains yet more small optimisations, some uncontroversial, some controversial.
Ideally each is independent.
The optimisations were identified by using a bstgen'd project of 25000 elements in dot formation and then
running bst build build_all.bst with self._run() commented out in _stream.py::Stream.build().
Changes proposed in this merge request:
- Only retrieve provenance in
_yaml.py::node_get()when it's needed (saves 15s in testing) - Open-code conditions in
_yaml.py::node_sanitize()to reduce reliance onisinstance(saves 13s in testing) - Optimise for cache key generation by pre-sanitising data and carefully modifying it when needed (saves 8s in testing)
- Remove reliance on
isinstance()in_yaml.py::{node,list}_{chain_,}copy(saves 9s to 12s in testing)
This merge request, when approved, will improve matters for #466 (closed)
Edited by Daniel Silverstone