Individual source expressions are usually pretty small, but the asymptotics are really bad.
For example, simp dumb lets traverses its entire child for a substitution, but then does another traversal to continue finding redundant lets.
The Transform can't be used (and thankfully isn't) because it has exponential time complexity – it does a traversal over the children, but its argument does too.