djspiewak/anti-xml — pull request #72 by josharnold52 (2011-10-19 05:29:33+00:00)
Title: New Performance Trials and Optimizations

This request contains several new performance trials and some very significant optimizations. I'll discuss the results of the new trials in #60.

Note that my earlier `Zipper` refactor hurt selection times compared to the very high bar @ncreep had set. These optimizations bring the performance back to that level and beyond.

Performance Tests:

* Added several new trials to measure various Zipper operations as well as overall "select/modify/unselect" times
* Added new implementations to selection trials to isolate the effect of the Zipper and of the bloom filter on selection times
* Moved Performance into its own package and split it into multiple classes
* New command line options to run certain "categories" of trials (load, selection, modify, etc.)

Optimizations:

* Put hole information in its own tree structure (`ZipperHoleMap`) rather than a SortedMap
* Defer expensive zipper calculations to `unselect`
* Avoid Int boxing in non-transient path structures (`ZipperPath`)
* Use VectorCase wherever small vectors are likely
* Make PathCreator.PathVals traverse selections lazily
* Reuse empty Group instances (helps with size and with the bloom filter calculation)

This pull request does contain a large number files, but most of them are in the `test` directory. Many of them are the result of splitting out the Performance class.