From 1edeb561e62d15579a2c7d0e59ab16308ed4da1c Mon Sep 17 00:00:00 2001 From: Anton Antonov Date: Tue, 17 Sep 2024 00:04:01 +0500 Subject: [PATCH] Enhanced the performance of operators that align with C# operators. (#65) --- .../CompilationBenchmarks-report-github.md | 52 ++--- .../results/CompilationBenchmarks-report.csv | 48 ++-- .../results/CompilationBenchmarks-report.html | 52 ++--- ...oundingInterestBenchmarks-report-github.md | 28 +-- .../CompoundingInterestBenchmarks-report.csv | 24 +- .../CompoundingInterestBenchmarks-report.html | 28 +-- .../EvaluationBenchmarks-report-github.md | 40 ++-- .../results/EvaluationBenchmarks-report.csv | 40 ++-- .../results/EvaluationBenchmarks-report.html | 42 ++-- .../CompilationBenchmarks.cs | 4 + .../CompoundingInterestBenchmarks.cs | 4 + .../EvaluationBenchmarks.cs | 4 +- MathEvaluation.Benchmarks/Program.cs | 4 +- .../DecimalDotNetStandartMathContextTests.cs | 4 +- .../DotNetStandartMathContextTests.cs | 4 +- .../MathExpressionTests.Compile.cs | 6 +- ...hExpressionTests_DecimalContext.Compile.cs | 6 +- .../DecimalDotNetStandartMathContextTests.cs | 4 +- .../DotNetStandartMathContextTests.cs | 4 +- .../MathExpressionTests.Evaluate.cs | 6 +- ...ExpressionTests_DecimalContext.Evaluate.cs | 6 +- .../DecimalDotNetStandartMathContext.cs | 56 ++--- .../Decimal/DecimalProgrammingMathContext.cs | 58 ++--- .../Decimal/DecimalScientificMathContext.cs | 105 ++++----- .../Context/DotNetStandartMathContext.cs | 56 ++--- MathEvaluation/Context/IMathContext.cs | 32 +-- MathEvaluation/Context/MathContext.cs | 37 +-- .../Context/ProgrammingMathContext.cs | 61 ++--- .../Context/ScientificMathContext.cs | 108 ++++----- MathEvaluation/Entities/EvalPrecedence.cs | 25 +- .../Entities/MathCompatibleOperator.cs | 221 ++++++++++++++++++ MathEvaluation/Entities/MathConstant.cs | 4 +- MathEvaluation/Entities/MathFunction.cs | 4 +- .../Entities/MathGetValueFunction.cs | 4 +- MathEvaluation/Entities/MathOperator.cs | 58 +---- MathEvaluation/Entities/MathUnaryFunction.cs | 4 +- MathEvaluation/Entities/MathVariable.cs | 4 +- MathEvaluation/Entities/OperatorAttribute.cs | 38 +++ MathEvaluation/Entities/OperatorType.cs | 149 ++++++++++++ MathEvaluation/Extensions/StringExtensions.cs | 6 +- MathEvaluation/MathEvaluation.csproj | 2 +- MathEvaluation/MathExpression.Compile.cs | 6 +- .../MathExpression.CompileBoolean.cs | 2 +- .../MathExpression.EvaluateBoolean.cs | 4 +- .../MathExpression.EvaluateDecimal.cs | 4 +- MathEvaluation/MathExpression.cs | 6 +- MathEvaluation/Parameters/IMathParameters.cs | 2 +- MathEvaluation/Parameters/MathParameters.cs | 6 +- 48 files changed, 875 insertions(+), 597 deletions(-) create mode 100644 MathEvaluation/Entities/MathCompatibleOperator.cs create mode 100644 MathEvaluation/Entities/OperatorAttribute.cs create mode 100644 MathEvaluation/Entities/OperatorType.cs diff --git a/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report-github.md b/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report-github.md index 928ac4b..36d153a 100644 --- a/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report-github.md +++ b/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report-github.md @@ -9,29 +9,29 @@ BenchmarkDotNet v0.13.12, Windows 11 (10.0.22631.4169/23H2/2023Update/SunValley3 ``` -| Method | Job | Runtime | Mean | Error | StdDev | Gen0 | Gen1 | Allocated | -|----------------------------------------------------------------------------- |--------- |--------- |---------------:|--------------:|------------:|-------:|-------:|----------:| -| 'MathEvaluator: "22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6"' | .NET 6.0 | .NET 6.0 | 19,787.342 ns | 225.0297 ns | 199.4830 ns | 0.4883 | 0.2441 | 6439 B | -| 'NCalc: "22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6"' | .NET 6.0 | .NET 6.0 | 35,810.298 ns | 205.4547 ns | 192.1825 ns | 0.6714 | 0.3052 | 8919 B | -| 'MathEvaluator: "true or not false and (true or false)"' | .NET 6.0 | .NET 6.0 | 24,505.778 ns | 257.3187 ns | 240.6961 ns | 0.5493 | 0.2747 | 7040 B | -| 'NCalc: "true or not false and (true or false)"' | .NET 6.0 | .NET 6.0 | 26,508.401 ns | 239.9924 ns | 212.7470 ns | 0.3967 | 0.1831 | 5215 B | -| 'MathEvaluator: "A or not B and (C or B)"' | .NET 6.0 | .NET 6.0 | 99,707.125 ns | 614.4115 ns | 544.6598 ns | 0.7324 | 0.3662 | 9256 B | -| 'NCalc: "A or not B and (C or B)"' | .NET 6.0 | .NET 6.0 | 83,373.804 ns | 762.8255 ns | 713.5475 ns | 0.4883 | 0.2441 | 6662 B | -| 'MathEvaluator: fn(new BooleanVariables { A = a, B = b, C = c })' | .NET 6.0 | .NET 6.0 | 2.964 ns | 0.0363 ns | 0.0339 ns | 0.0019 | - | 24 B | -| 'NCalc: fn(new BooleanVariables { A = a, B = b, C = c })' | .NET 6.0 | .NET 6.0 | 3.380 ns | 0.0257 ns | 0.0240 ns | 0.0019 | - | 24 B | -| 'MathEvaluator: "Sin(pi/6) + Cos(pi/3)"' | .NET 6.0 | .NET 6.0 | 76,632.326 ns | 322.1694 ns | 301.3575 ns | 0.3662 | 0.1221 | 6090 B | -| 'NCalc: "Sin(pi/6) + Cos(pi/3)"' | .NET 6.0 | .NET 6.0 | 38,584.306 ns | 260.4481 ns | 217.4860 ns | 0.6104 | 0.3052 | 8063 B | -| 'MathEvaluator: "Sin(a) + Cos(b)"' | .NET 6.0 | .NET 6.0 | 93,362.746 ns | 424.7119 ns | 397.2757 ns | 0.4883 | 0.2441 | 7189 B | -| 'NCalc: "Sin(a) + Cos(b)"' | .NET 6.0 | .NET 6.0 | 67,571.605 ns | 509.4477 ns | 476.5377 ns | 0.6104 | 0.2441 | 8590 B | -| 'MathEvaluator: "22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6"' | .NET 8.0 | .NET 8.0 | 17,642.583 ns | 174.0385 ns | 162.7957 ns | 0.4883 | 0.4578 | 6439 B | -| 'NCalc: "22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6"' | .NET 8.0 | .NET 8.0 | 30,528.357 ns | 186.2114 ns | 165.0715 ns | 0.6104 | 0.4883 | 8231 B | -| 'MathEvaluator: "true or not false and (true or false)"' | .NET 8.0 | .NET 8.0 | 21,108.876 ns | 174.6226 ns | 163.3421 ns | 0.5493 | 0.4883 | 7088 B | -| 'NCalc: "true or not false and (true or false)"' | .NET 8.0 | .NET 8.0 | 21,606.488 ns | 185.4472 ns | 173.4674 ns | 0.3967 | 0.3662 | 5263 B | -| 'MathEvaluator: "A or not B and (C or B)"' | .NET 8.0 | .NET 8.0 | 95,070.500 ns | 1,067.8141 ns | 998.8340 ns | 0.7324 | 0.4883 | 9304 B | -| 'NCalc: "A or not B and (C or B)"' | .NET 8.0 | .NET 8.0 | 75,947.476 ns | 402.8741 ns | 376.8487 ns | 0.4883 | 0.2441 | 6710 B | -| 'MathEvaluator: fn(new BooleanVariables { A = a, B = b, C = c })' | .NET 8.0 | .NET 8.0 | 2.632 ns | 0.0304 ns | 0.0285 ns | 0.0019 | - | 24 B | -| 'NCalc: fn(new BooleanVariables { A = a, B = b, C = c })' | .NET 8.0 | .NET 8.0 | 2.950 ns | 0.0254 ns | 0.0238 ns | 0.0019 | - | 24 B | -| 'MathEvaluator: "Sin(pi/6) + Cos(pi/3)"' | .NET 8.0 | .NET 8.0 | 98,751.284 ns | 507.8248 ns | 475.0196 ns | 0.3662 | 0.2441 | 6090 B | -| 'NCalc: "Sin(pi/6) + Cos(pi/3)"' | .NET 8.0 | .NET 8.0 | 34,159.757 ns | 175.9363 ns | 155.9630 ns | 0.6104 | 0.4883 | 7967 B | -| 'MathEvaluator: "Sin(a) + Cos(b)"' | .NET 8.0 | .NET 8.0 | 111,819.163 ns | 653.0272 ns | 578.8916 ns | 0.4883 | 0.2441 | 7189 B | -| 'NCalc: "Sin(a) + Cos(b)"' | .NET 8.0 | .NET 8.0 | 58,847.601 ns | 268.5919 ns | 251.2410 ns | 0.6104 | 0.4883 | 8510 B | +| Method | Job | Runtime | Mean | Error | StdDev | Gen0 | Gen1 | Allocated | +|----------------------------------------------------------------------------- |--------- |--------- |---------------:|--------------:|--------------:|-------:|-------:|----------:| +| 'MathEvaluator: "22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6"' | .NET 6.0 | .NET 6.0 | 19,938.791 ns | 166.2195 ns | 138.8008 ns | 0.4883 | 0.2441 | 6439 B | +| 'NCalc: "22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6"' | .NET 6.0 | .NET 6.0 | 36,920.265 ns | 713.5946 ns | 927.8745 ns | 0.6714 | 0.3052 | 8919 B | +| 'MathEvaluator: "true or not false and (true or false)"' | .NET 6.0 | .NET 6.0 | 24,230.694 ns | 163.0016 ns | 144.4967 ns | 0.5493 | 0.2747 | 7040 B | +| 'NCalc: "true or not false and (true or false)"' | .NET 6.0 | .NET 6.0 | 26,380.959 ns | 381.7797 ns | 338.4377 ns | 0.3967 | 0.1831 | 5215 B | +| 'MathEvaluator: "A or not B and (C or B)"' | .NET 6.0 | .NET 6.0 | 100,971.944 ns | 1,651.1639 ns | 1,544.4997 ns | 0.7324 | 0.3662 | 9256 B | +| 'NCalc: "A or not B and (C or B)"' | .NET 6.0 | .NET 6.0 | 83,576.104 ns | 948.3688 ns | 887.1048 ns | 0.4883 | 0.2441 | 6662 B | +| 'MathEvaluator: fn(new BooleanVariables { A = a, B = b, C = c })' | .NET 6.0 | .NET 6.0 | 2.936 ns | 0.0271 ns | 0.0253 ns | 0.0019 | - | 24 B | +| 'NCalc: fn(new BooleanVariables { A = a, B = b, C = c })' | .NET 6.0 | .NET 6.0 | 3.556 ns | 0.0905 ns | 0.1006 ns | 0.0019 | - | 24 B | +| 'MathEvaluator: "Sin(pi/6) + Cos(pi/3)"' | .NET 6.0 | .NET 6.0 | 78,986.703 ns | 1,479.4636 ns | 1,453.0311 ns | 0.3662 | 0.1221 | 6090 B | +| 'NCalc: "Sin(pi/6) + Cos(pi/3)"' | .NET 6.0 | .NET 6.0 | 40,382.823 ns | 793.0421 ns | 1,058.6884 ns | 0.6104 | 0.3052 | 8063 B | +| 'MathEvaluator: "Sin(a) + Cos(b)"' | .NET 6.0 | .NET 6.0 | 97,566.627 ns | 1,686.6910 ns | 1,577.7318 ns | 0.4883 | 0.2441 | 7189 B | +| 'NCalc: "Sin(a) + Cos(b)"' | .NET 6.0 | .NET 6.0 | 70,452.834 ns | 1,368.8036 ns | 1,576.3163 ns | 0.6104 | 0.2441 | 8510 B | +| 'MathEvaluator: "22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6"' | .NET 8.0 | .NET 8.0 | 18,447.447 ns | 252.3220 ns | 223.6769 ns | 0.4883 | 0.4578 | 6439 B | +| 'NCalc: "22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6"' | .NET 8.0 | .NET 8.0 | 32,740.270 ns | 638.7286 ns | 1,013.0913 ns | 0.6104 | 0.4883 | 8231 B | +| 'MathEvaluator: "true or not false and (true or false)"' | .NET 8.0 | .NET 8.0 | 23,697.547 ns | 464.6382 ns | 604.1610 ns | 0.5493 | 0.4883 | 7088 B | +| 'NCalc: "true or not false and (true or false)"' | .NET 8.0 | .NET 8.0 | 24,406.666 ns | 475.4540 ns | 547.5336 ns | 0.3967 | 0.3662 | 5263 B | +| 'MathEvaluator: "A or not B and (C or B)"' | .NET 8.0 | .NET 8.0 | 97,830.970 ns | 1,544.3126 ns | 1,444.5510 ns | 0.7324 | 0.4883 | 9304 B | +| 'NCalc: "A or not B and (C or B)"' | .NET 8.0 | .NET 8.0 | 78,474.557 ns | 972.4896 ns | 909.6674 ns | 0.4883 | 0.2441 | 6710 B | +| 'MathEvaluator: fn(new BooleanVariables { A = a, B = b, C = c })' | .NET 8.0 | .NET 8.0 | 2.830 ns | 0.0815 ns | 0.1737 ns | 0.0019 | - | 24 B | +| 'NCalc: fn(new BooleanVariables { A = a, B = b, C = c })' | .NET 8.0 | .NET 8.0 | 3.307 ns | 0.0829 ns | 0.1453 ns | 0.0019 | - | 24 B | +| 'MathEvaluator: "Sin(pi/6) + Cos(pi/3)"' | .NET 8.0 | .NET 8.0 | 105,298.874 ns | 2,079.5129 ns | 4,006.5153 ns | 0.2441 | - | 6084 B | +| 'NCalc: "Sin(pi/6) + Cos(pi/3)"' | .NET 8.0 | .NET 8.0 | 34,885.354 ns | 226.5149 ns | 211.8822 ns | 0.6104 | 0.4883 | 7967 B | +| 'MathEvaluator: "Sin(a) + Cos(b)"' | .NET 8.0 | .NET 8.0 | 114,326.405 ns | 640.1140 ns | 598.7630 ns | 0.4883 | 0.2441 | 7185 B | +| 'NCalc: "Sin(a) + Cos(b)"' | .NET 8.0 | .NET 8.0 | 60,732.883 ns | 256.0143 ns | 239.4759 ns | 0.6104 | 0.4883 | 8510 B | diff --git a/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report.csv b/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report.csv index 7b3b895..1604caa 100644 --- a/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report.csv +++ b/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report.csv @@ -1,25 +1,25 @@ Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Gen0,Gen1,Allocated -"'MathEvaluator: ""22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"19,787.342 ns",225.0297 ns,199.4830 ns,0.4883,0.2441,6439 B -"'NCalc: ""22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"35,810.298 ns",205.4547 ns,192.1825 ns,0.6714,0.3052,8919 B -"'MathEvaluator: ""true or not false and (true or false)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"24,505.778 ns",257.3187 ns,240.6961 ns,0.5493,0.2747,7040 B -"'NCalc: ""true or not false and (true or false)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"26,508.401 ns",239.9924 ns,212.7470 ns,0.3967,0.1831,5215 B -"'MathEvaluator: ""A or not B and (C or B)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"99,707.125 ns",614.4115 ns,544.6598 ns,0.7324,0.3662,9256 B -"'NCalc: ""A or not B and (C or B)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"83,373.804 ns",762.8255 ns,713.5475 ns,0.4883,0.2441,6662 B -"'MathEvaluator: fn(new BooleanVariables { A = a, B = b, C = c })'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2.964 ns,0.0363 ns,0.0339 ns,0.0019,0.0000,24 B -"'NCalc: fn(new BooleanVariables { A = a, B = b, C = c })'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,3.380 ns,0.0257 ns,0.0240 ns,0.0019,0.0000,24 B -"'MathEvaluator: ""Sin(pi/6) + Cos(pi/3)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"76,632.326 ns",322.1694 ns,301.3575 ns,0.3662,0.1221,6090 B -"'NCalc: ""Sin(pi/6) + Cos(pi/3)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"38,584.306 ns",260.4481 ns,217.4860 ns,0.6104,0.3052,8063 B -"'MathEvaluator: ""Sin(a) + Cos(b)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"93,362.746 ns",424.7119 ns,397.2757 ns,0.4883,0.2441,7189 B -"'NCalc: ""Sin(a) + Cos(b)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"67,571.605 ns",509.4477 ns,476.5377 ns,0.6104,0.2441,8590 B -"'MathEvaluator: ""22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"17,642.583 ns",174.0385 ns,162.7957 ns,0.4883,0.4578,6439 B -"'NCalc: ""22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"30,528.357 ns",186.2114 ns,165.0715 ns,0.6104,0.4883,8231 B -"'MathEvaluator: ""true or not false and (true or false)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"21,108.876 ns",174.6226 ns,163.3421 ns,0.5493,0.4883,7088 B -"'NCalc: ""true or not false and (true or false)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"21,606.488 ns",185.4472 ns,173.4674 ns,0.3967,0.3662,5263 B -"'MathEvaluator: ""A or not B and (C or B)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"95,070.500 ns","1,067.8141 ns",998.8340 ns,0.7324,0.4883,9304 B -"'NCalc: ""A or not B and (C or B)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"75,947.476 ns",402.8741 ns,376.8487 ns,0.4883,0.2441,6710 B -"'MathEvaluator: fn(new BooleanVariables { A = a, B = b, C = c })'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2.632 ns,0.0304 ns,0.0285 ns,0.0019,0.0000,24 B -"'NCalc: fn(new BooleanVariables { A = a, B = b, C = c })'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2.950 ns,0.0254 ns,0.0238 ns,0.0019,0.0000,24 B -"'MathEvaluator: ""Sin(pi/6) + Cos(pi/3)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"98,751.284 ns",507.8248 ns,475.0196 ns,0.3662,0.2441,6090 B -"'NCalc: ""Sin(pi/6) + Cos(pi/3)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"34,159.757 ns",175.9363 ns,155.9630 ns,0.6104,0.4883,7967 B -"'MathEvaluator: ""Sin(a) + Cos(b)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"111,819.163 ns",653.0272 ns,578.8916 ns,0.4883,0.2441,7189 B -"'NCalc: ""Sin(a) + Cos(b)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"58,847.601 ns",268.5919 ns,251.2410 ns,0.6104,0.4883,8510 B +"'MathEvaluator: ""22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"19,938.791 ns",166.2195 ns,138.8008 ns,0.4883,0.2441,6439 B +"'NCalc: ""22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"36,920.265 ns",713.5946 ns,927.8745 ns,0.6714,0.3052,8919 B +"'MathEvaluator: ""true or not false and (true or false)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"24,230.694 ns",163.0016 ns,144.4967 ns,0.5493,0.2747,7040 B +"'NCalc: ""true or not false and (true or false)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"26,380.959 ns",381.7797 ns,338.4377 ns,0.3967,0.1831,5215 B +"'MathEvaluator: ""A or not B and (C or B)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"100,971.944 ns","1,651.1639 ns","1,544.4997 ns",0.7324,0.3662,9256 B +"'NCalc: ""A or not B and (C or B)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"83,576.104 ns",948.3688 ns,887.1048 ns,0.4883,0.2441,6662 B +"'MathEvaluator: fn(new BooleanVariables { A = a, B = b, C = c })'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2.936 ns,0.0271 ns,0.0253 ns,0.0019,0.0000,24 B +"'NCalc: fn(new BooleanVariables { A = a, B = b, C = c })'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,3.556 ns,0.0905 ns,0.1006 ns,0.0019,0.0000,24 B +"'MathEvaluator: ""Sin(pi/6) + Cos(pi/3)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"78,986.703 ns","1,479.4636 ns","1,453.0311 ns",0.3662,0.1221,6090 B +"'NCalc: ""Sin(pi/6) + Cos(pi/3)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"40,382.823 ns",793.0421 ns,"1,058.6884 ns",0.6104,0.3052,8063 B +"'MathEvaluator: ""Sin(a) + Cos(b)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"97,566.627 ns","1,686.6910 ns","1,577.7318 ns",0.4883,0.2441,7189 B +"'NCalc: ""Sin(a) + Cos(b)""'",.NET 6.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 6.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"70,452.834 ns","1,368.8036 ns","1,576.3163 ns",0.6104,0.2441,8510 B +"'MathEvaluator: ""22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"18,447.447 ns",252.3220 ns,223.6769 ns,0.4883,0.4578,6439 B +"'NCalc: ""22888.32 * 30 / 323.34 / .5 - -1 / (2 + 22888.32) * 4 - 6""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"32,740.270 ns",638.7286 ns,"1,013.0913 ns",0.6104,0.4883,8231 B +"'MathEvaluator: ""true or not false and (true or false)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"23,697.547 ns",464.6382 ns,604.1610 ns,0.5493,0.4883,7088 B +"'NCalc: ""true or not false and (true or false)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"24,406.666 ns",475.4540 ns,547.5336 ns,0.3967,0.3662,5263 B +"'MathEvaluator: ""A or not B and (C or B)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"97,830.970 ns","1,544.3126 ns","1,444.5510 ns",0.7324,0.4883,9304 B +"'NCalc: ""A or not B and (C or B)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"78,474.557 ns",972.4896 ns,909.6674 ns,0.4883,0.2441,6710 B +"'MathEvaluator: fn(new BooleanVariables { A = a, B = b, C = c })'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,2.830 ns,0.0815 ns,0.1737 ns,0.0019,0.0000,24 B +"'NCalc: fn(new BooleanVariables { A = a, B = b, C = c })'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,3.307 ns,0.0829 ns,0.1453 ns,0.0019,0.0000,24 B +"'MathEvaluator: ""Sin(pi/6) + Cos(pi/3)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"105,298.874 ns","2,079.5129 ns","4,006.5153 ns",0.2441,0.0000,6084 B +"'NCalc: ""Sin(pi/6) + Cos(pi/3)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"34,885.354 ns",226.5149 ns,211.8822 ns,0.6104,0.4883,7967 B +"'MathEvaluator: ""Sin(a) + Cos(b)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"114,326.405 ns",640.1140 ns,598.7630 ns,0.4883,0.2441,7185 B +"'NCalc: ""Sin(a) + Cos(b)""'",.NET 8.0,False,Default,Default,Default,Default,Default,Default,1111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,"60,732.883 ns",256.0143 ns,239.4759 ns,0.6104,0.4883,8510 B diff --git a/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report.html b/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report.html index 255fea6..358c278 100644 --- a/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report.html +++ b/BenchmarkDotNet.Artifacts/results/CompilationBenchmarks-report.html @@ -2,7 +2,7 @@ -CompilationBenchmarks-20240913-172955 +CompilationBenchmarks-20240916-233711