Skip to content

Commit

Permalink
Enhanced the performance of operators that align with C# operators. (#65
Browse files Browse the repository at this point in the history
)
  • Loading branch information
AntonovAnton authored Sep 16, 2024
1 parent a9d36e4 commit 1edeb56
Show file tree
Hide file tree
Showing 48 changed files with 875 additions and 597 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Loading

0 comments on commit 1edeb56

Please sign in to comment.