I've tweaked it HERE.
The reason for the massive CPU overhead was because:
a) It was creating thousands of slices needlessly, and
b) it was redrawing every slice when it didn't need to.
It still has a CPU jump when a change has been made, but then settles down.
Just compare both versions for changes.
There's probably a much better way of doing this, but let's call this the first iteration :)