Loading
Commits on Source 6
-
Daniel Silverstone authored
We were indiscriminately retrieving the node's provenance data in the `node_get()` function which was accounting for approximately a third of the total runtime of `node_get()` which dominates pre-scheduler time in `bst build`. This change ameliorates that situation by only retrieving the provenance data when it's actually needed. Signed-off-by:Daniel Silverstone <daniel.silverstone@codethink.co.uk>
-
Daniel Silverstone authored
We know that nodes are typically one of: str, list, dict, bool, tuple, NoneType or our ChainMap Of these, dict and ChainMap are Mapping, only list is list and the rest are returned unchanged. We can reduce/defer our use of isinstance here, dramatically, improving performance. Signed-off-by:Daniel Silverstone <daniel.silverstone@codethink.co.uk>
-
Daniel Silverstone authored
A non-trivial proportion of time pre-scheduler in `bst build` is spent copying (or chain-copying) nodes. Approximately a quarter of the time spent in that effort is in `isinstance()`. This removes that CPU load. Signed-off-by:Daniel Silverstone <daniel.silverstone@codethink.co.uk>
-
Daniel Silverstone authored
By re-using the isinstance replacements from earlier commits and using a tuple of the string constants for checking for composition markers, we reduce the cost of node_final_assertions by two thirds in basic testing. Signed-off-by:Daniel Silverstone <daniel.silverstone@codethink.co.uk>
-
Daniel Silverstone authored
While get_strict() doesn't look expensive per-se, it is called so many times that it is valuable to cache the result once computed. Since I don't think it can change once it is computable, cache it immediately that becomes possible and we save 20s in my test case. Signed-off-by:Daniel Silverstone <daniel.silverstone@codethink.co.uk>
-
Benjamin Schubert authored
Further optimisations See merge request !1131