High Performance Computing for Numerical Algorithms
There are two major reasons why software development is more convenient and efficient with .NET. Firstly, modern object-oriented programming languages allow programmers to write high level code, which abstracts away platform specifics and makes it easier to handle large projects.
Secondly, automatic memory management helps avoid the serious errors that can happen when developers use native languages such as C or FORTRAN.
Automatic memory management is the reason for low performance of managed software frameworks when it comes to mathematical algorithms and large data.
Therefore, ILNumerics provides its own automatic memory management: it is optimized for numerical algorithms and consequently re-uses memory blocks for all mathematical objects. In ILNumerics, these objects (intelligent arrays) contain information about their lifetime; this allows the ILNumerics memory management to collect used memory in a pool and to avoid unnecessary reallocations.
ILNumerics circumvents .NET’s automatic memory management using modern OOP principles and realizes the required high execution speed of numerical algorithms while retaining optimal syntactical convenience.
.NET provides extended optimization options
In addition to the efficient memory management, ILNumerics uses .NET’s extended optimization features which are not, for example, available on the Java platform. This includes methods which have made native languages such as C/C++ so fast: pointer arithmetics, cache optimization, and loop unrolling are all utilized by ILNumerics internally.
All this gives mathematical algorithms on the.NET framework a performance similar to traditional native languages – right within a modern software framework.