the non-violent solution

stable version: 0.3
master version: 0.4-SNAPSHOT


Performance is one of the most important features of a framework, particularly one operating at a low-level on comparatively sizable data sets (like XML). This is why we have made benchmarking and rigorous performance testing an integral part of our development process. We're still adding tests and optimizing, but the results are already very promising.

One feature of Anti-XML which is important to remember is the fact that we use bloom filters to optimize selection over arbitrarily large trees. This is why both shallow and deep selection are almost unacountably fast under Anti-XML (when compared to scala.xml and even javax.xml). Unfortunately, it is also why Anti-XML trees require noticably more memory than scala.xml, and why Anti-XML parse times tend toward the long side.

All of the tests below were performed on a 2010 MacBook Pro with a Dual core, 2.66 Ghz Core i7 (Turbo up to 3 Ghz) and hyperthreading enabled, 8 GB of 1067 Mhz DDR3 RAM and a 256 GB 3 Gbps SATA2 SSD. The sources for all of the performance tests can be found in the repository.

Source Size Anti-XML scala.xml javax.xml
7.1 MB 50.39 MB 45.33 MB 37.89 MB
32 MB 250.9 MB 179.5 MB 168.1 MB


Action Anti-XML scala.xml javax.xml
Parse 195 ms 232 ms 97 ms
Shallow-Select 6 ms 15 ms -
Deep-Select 5 ms 265 ms 16 ms

Action Anti-XML scala.xml javax.xml
Parse 1119 ms 1161 ms 692 ms
Shallow-Select 620 ms 84 ms -
Deep-Select 342 ms 1220 ms 50 ms