Replacing textnodes in the DOM was the most expensive action, so just checking if the replacement differs from the current value before doing the replacement made a huge difference because a lot of nodes didn't get hyphenated because none of the words were long enough to qualify based on the min_length setting. This made the benchmark 8 times faster because only about 1/8th of the nodes were changed by the hyphenation.