AsproSort - Performance Numbers
We have run thousands of performance tests using the various AsproSort algorithms and have had
some very surprising results. Here are some performance numbers for Asprosort's two most performant
algorithms done under what can could be called average conditions. They were run on very similar
hardware, all the tests had similar speed processors though the 64 bit machines had larger on-board cache
sizes. All test machines had 4GB of RAM (though, of course, the x86 machines could not fully use it all).
The machines were not running any high need (either CPU or disk) applications but they were not
artificially barren of any running apps, they were, hopefully, your average low-power server type
setup.
All the trials were performed on arrays using the Array.Sort<T> method for the .Net sort
and the obvious Sort<T> method from the appropriate algorithm class; except the 256 byte
struct - pointer column which uses the unsafe sorting method and the last column which is a
generic list sorted using the OrderBy<T, K> extension method for the .Net sort. All trials
were done with the number of elements specified in the second row and the results are all given
in seconds.
The results show that there is a significant gain to be had using AsproSort's sorting routines over
the builtin .Net routines even on a single processor machine. And huge gains to be had on multi-processor
machines. But perhaps the most important result is that it demonstrates that there is no one size fits all
sorting strategy - different type sizes, different data bus sizes and different processor numbers often
need diffent strategies.