Hookalyzer's development is stalled because of severe performance issues in the diffing iterator.
The current iterator implementation is highly inefficient. It walks data trees (trees/branches being either an object or an array) top-down. From each branch value in the tree, it fully descends to each reachable leaf. This results in a some kind of polynomial-ish worst-case running time, primarily determined by the height of the tree. (I think - it might not actually be this bad, but even if not it's somewhere around quadratic for the worst-case)
A better implementation could work from the bottom of the trees up and never redescend. In theory, we could get it up to O(n), worst-case running time.
Because Drupal 8 passes data structures with >50 levels of nesting through alters (cough queries cough views cough), this hits us very, very hard.
Comments
Comment #1
sdboyer commentedComment #2
sdboyer commentedComment #3
sdboyer commented