Performance Testing
We have run several benchmarks comparing Meta.Numerics to the GNU scientific library (GSL).
The GSL is a widely-used, open-source, native C++ library. As you can see, Meta.Numerics performs very well!
Task |
Meta.Numerics |
GSL |
LU decompose a random 1000 X 1000 matrix |
1800 ms |
5900 ms |
Fourier transform a length-10,000 complex series |
2 ms |
2 ms |
Fourier transform a length-11,117 complex series (length is
a large prime number) |
8 ms |
1000 ms |
Compute 100,000 Bessel function values |
300 ms |
1100 ms |
These tests were run on the same computer (a commodity desktop) running the same operating system (Windows 7) under the same conditions.
The GSL benchmark is purely native. We didn't make the GSL "look slow" by writing a managed benchmark application that had to make
externals call to the native GSL library routines. GSL really is slower for the benchmarked tasks.
(If you purchase the Intel Math Kernel Library, currently retailing for
$399 per developer, GSL can use it for linear algebra operations, which would significantly speed up LU decomposition.)
Correctness Testing
Our unit tests verify more than 1000 mathematical relationships, most for scores of different arguments ranging over many orders of magnitude.
If there is a relationship in Abromiwitz and Stegun expressible involving our library functions, we have probably tested it. If the distribution
of a test statistic arises from some null hypothesis, we have probably verified via simulation that our framework accurately reproduces it.
Our test cases achieve code coverage in excess of 85%. They can be obtained from our source code repository and used or modified for your
own purposes.
|