High Speed Performance
Usually there is a trade off between syntactical convenience and execution speed. ILNumerics gives you the best of both worlds - speed and convenience! The following example is a nice illustration. We want to add two large matrices and compute the column sums. You find the C version first, the ILNumerics version is below:
ILNumerics' array syntax is not only much shorter. It is also faster:
Execution times, 2000 x 2000 double matrix, column sums, 100 repetitions:
C Version: 8.020 ms
ILNumerics: 5.770 ms
This becomes even more obvious when taking the row sums instead:
Execution times, 2000 x 2000 double matrix, row sums, 100 repetitions:
C Version: 43.650 ms
ILNumerics: 5.550 ms
The ILNumerics Computing Engine has been developed for numerical algorithms on large data and uses most of the optimizations that gained FORTRAN its great success. ILNumerics internally unrolls large loops and keeps the processor caches in mind. In addition, it eliminates array boundary checks by using efficient pointer arithmetics. A new parallelization scheme automatically adopts its parameters at runtime, being more efficient on multicore processors and applicable for large-sized and even for low and mid-sized data.