mXparser was separately written in JAVA and C# - this allows to cover significant part of possible applications and platforms, including JAVA, Android, .NET and MONO. Solution performance highly depends on the usage type (different API functions, inserted formulas), thus performance tests were prepared in several different scenarios.
- Simple calculation – expression defined once, the recalculated.
- Expression with argument – expression defined once, then recalculated – this scenario gives information how mXparser behaves for typical application, where argument is changing without changing the formula.
- Expression with user defined function - expression defined once, then recalculated – this is another example of typical application, where expression and function is defined once, and only recalculated after changing arguments values.
Definition of constant, argument, functions, expression – currently mXparser supports two types of constructors:
- One string, i.e. "x = 5", "f(x,y) = sin(x) + cos(y)" – much slower method, as it requires deeper checking using regular expressions, then tokenizing for extraction of names, etc.
- Object name, object params – much faster, only object name is being verified against specified regular expressions.
- JAVA 1.8 API is much faster than .NET when we consider Windows 10 and the newest .NET 4.0 and above
- Mono 4.2 API on Windows 10 is much slower than .NET 4.0 and above
- JAVA 1.7 API is only slightly faster than .NET in case of Windows 7 and the .NET 2.0
- JAVA 1.5 API is far much slower than JAVA 1.6, 1.7, 1.8
- Mono 3.2.1 API is much faster than JAVA 1.8 on Rapsberry Pi 2
Please refer to the performance test details.
Run your own performance tests
java -cp mxparser.jar org.mariuszgromada.math.mxparser.regressiontesting.PerformanceTests
.NET - i.e. from the PowerShell
Download latest release – v.4.2.0 Aquaria: bin only (.zip 5.99 MB) – separate binaries for java: 1.6, 1.7, 1.8; .NET: 2.0, 3.0, 3.5, 4.0, 4.5, 4.6, 4.7, .NET Core, .NET Standard, .NET PCL, Xamarin.Android, Xamarin.iOS