I played with some algorithms today and got about a 7x improvement in reduction time for my test case. The data is now arranged into a binary tree, and the progress indicator was changed to reflect that. Let me know if I broke anything in the process.
Hooray, DustMite ftw!