mXparser - Performance

 

MathParser.org - mXparser - logo - High Performance

*** If you found the software useful donation is something you might consider 🙂 ***

If you found the software useful donation is something you might consider :-)
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.

Calculation tests

  • 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.

API tests

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.

Conclusions

  • 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


java -cp mxparser.jar org.mariuszgromada.math.mxparser.regressiontesting.PerformanceTests

.NET - i.e. from the PowerShell


[Reflection.Assembly]::LoadFile("full\exact\path\to\mxparser.dll")
[org.mariuszgromada.math.mxparser.regressiontesting.PerformanceTests]::Start()

*** If you found the software useful donation is something you might consider 🙂 ***

If you found the software useful donation is something you might consider :-)

Enjoy 🙂

Best regards,

Mariusz Gromada

Download latest release – v.4.0.0.2: bin + doc + src (.zip 10.7 MB)

Download latest release – v.4.0.0.2: bin only (.zip 3.04 MB) – separate binaries for java: 1.5, 1.6, 1.7, 1.8; .NET: 2.0, 3.0, 3.5, 4.0, 4.5, 4.6, .NET Core, .NET Standard, .NET PCL, Xamarin.Android, Xamarin.iOS

Source code .zipSource code .tar.gz View on GitHubMathSpace.pl