Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance improvements #451

Closed
lahma opened this issue Dec 22, 2017 · 15 comments
Closed

Performance improvements #451

lahma opened this issue Dec 22, 2017 · 15 comments

Comments

@lahma
Copy link
Collaborator

lahma commented Dec 22, 2017

This issue is tracking various pull requests and performance issues to keep track of progress.

Baseline created of benchmarks using commit 4a7fed1

BenchmarkDotNet=v0.10.11, OS=Windows 10 Redstone 3 [1709, Fall Creators Update] (10.0.16299.125)
Processor=Intel Core i7-6820HQ CPU 2.70GHz (Skylake), ProcessorCount=8
Frequency=2648437 Hz, Resolution=377.5812 ns, Timer=TSC
.NET Core SDK=2.1.2
  [Host]     : .NET Core 2.0.3 (Framework 4.6.25815.02), 64bit RyuJIT

ArrayBenchmark

Method N Mean Error StdDev Gen 0 Allocated
Slice 100 7.344 ms 0.1141 ms 0.1068 ms 3562.5000 14.26 MB
Concat 100 6.174 ms 0.0582 ms 0.0516 ms 2515.6250 10.07 MB
Unshift 100 196.603 ms 3.9271 ms 3.6734 ms 47250.0000 189.24 MB
Push 100 37.944 ms 0.2475 ms 0.2315 ms 8125.0000 32.67 MB
Index 100 27.836 ms 0.2256 ms 0.2000 ms 5812.5000 23.32 MB
Map 100 13.526 ms 0.0419 ms 0.0392 ms 4218.7500 16.93 MB
Apply 100 7.946 ms 0.0679 ms 0.0635 ms 2968.7500 11.89 MB
JsonStringifyParse 100 15.247 ms 0.0311 ms 0.0260 ms 6437.5000 25.77 MB

ArrayStressBenchmark

Method N Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Jint 20 3.775 s 0.6523 s 0.0369 s 786750.0000 40250.0000 18500.0000 3.17 GB

EvaluationBenchmark

Method N Mean Error StdDev Gen 0 Allocated
Jint 20 1.846 ms 0.0183 ms 0.0171 ms 263.6719 1.06 MB

LinqJsBenchmark

Method N Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Jint 10 106.1 ms 3.802 ms 0.2148 ms 9312.5000 2687.5000 1062.5000 55.54 MB

MinimalScriptBenchmark

Method N Mean Error StdDev Gen 0 Allocated
Jint 10 27.71 us 0.0954 us 0.0893 us 9.4910 38.98 KB

SunSpiderBenchmark

Method FileName Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Run 3d-cube 1,184.2 ms 163.111 ms 9.2161 ms 210000.0000 250.0000 - 842.35 MB
Run 3d-morph 1,279.9 ms 6.912 ms 0.3905 ms 191500.0000 51500.0000 6750.0000 758.14 MB
Run 3d-raytrace 1,043.6 ms 17.447 ms 0.9858 ms 203500.0000 2250.0000 750.0000 818.78 MB
Run access-binary-trees 472.9 ms 70.924 ms 4.0073 ms 92750.0000 1000.0000 - 373.94 MB
Run access-fannkuch 3,730.5 ms 328.132 ms 18.5400 ms 794500.0000 250.0000 - 3178.96 MB
Run access-nbody 1,063.3 ms 76.921 ms 4.3462 ms 179000.0000 - - 716.74 MB
Run access-nsieve 1,807.5 ms 216.799 ms 12.2495 ms 257416.6667 73916.6667 10500.0000 1058.6 MB
Run bitops-3bit-bits-in-byte 884.8 ms 360.792 ms 20.3854 ms 167500.0000 - - 670.44 MB
Run bitops-bits-in-byte 1,387.0 ms 561.769 ms 31.7410 ms 240500.0000 - - 962.87 MB
Run bitops-bitwise-and 884.9 ms 574.365 ms 32.4527 ms 101750.0000 - - 407.43 MB
Run bitops-nsieve-bits 1,568.4 ms 310.924 ms 17.5678 ms 296000.0000 31750.0000 1750.0000 1188 MB
Run controlflow-recursive 766.9 ms 225.838 ms 12.7602 ms 147750.0000 2750.0000 - 599.25 MB
Run crypto-aes 1,145.9 ms 246.053 ms 13.9025 ms 259583.3333 250.0000 - 1042.38 MB
Run crypto-md5 677.5 ms 394.378 ms 22.2831 ms 123000.0000 2500.0000 500.0000 494.57 MB
Run crypto-sha1 689.1 ms 91.831 ms 5.1886 ms 126250.0000 1250.0000 250.0000 506.9 MB
Run date-format-tofte 793.1 ms 110.827 ms 6.2619 ms 153000.0000 250.0000 - 614.79 MB
Run date-format-xparb 527.0 ms 197.836 ms 11.1781 ms 51000.0000 250.0000 - 205.97 MB
Run math-cordic 1,774.1 ms 392.520 ms 22.1781 ms 297750.0000 - - 1191.14 MB
Run math-partial-sums 567.1 ms 22.894 ms 1.2936 ms 73000.0000 - - 292.71 MB
Run math-spectral-norm 884.5 ms 567.655 ms 32.0736 ms 144000.0000 - - 576.42 MB
Run regexp-dna 355.1 ms 281.066 ms 15.8807 ms 2833.3333 2333.3333 1833.3333 21.49 MB
Run string-base64 827.4 ms 393.957 ms 22.2593 ms 350000.0000 250.0000 - 1403.56 MB
Run string-fasta 1,109.0 ms 365.973 ms 20.6782 ms 204750.0000 - - 819.47 MB
Run string-tagcloud 905.4 ms 105.217 ms 5.9450 ms 197333.3333 121250.0000 114250.0000 1080.06 MB
Run string-unpack-code 355.2 ms 133.734 ms 7.5562 ms 61500.0000 4000.0000 1250.0000 261.57 MB
Run string-validate-input 2,830.8 ms 128.618 ms 7.2672 ms 1646166.6667 1562916.6667 1561666.6667 6460.55 MB

UncacheableExpressionsBenchmark

Method N Mean Error StdDev Gen 0 Gen 1 Allocated
Benchmark 500 1.181 s 0.0025 s 0.0036 s 281875.0000 10062.5000 1.12 GB
@lahma
Copy link
Collaborator Author

lahma commented Dec 22, 2017

Status for the new release 3.0.0-beta-1101. Typos and miscalculations are my own.

BenchmarkDotNet=v0.10.11, OS=Windows 10 Redstone 3 [1709, Fall Creators Update] (10.0.16299.192)
Processor=Intel Core i7-6820HQ CPU 2.70GHz (Skylake), ProcessorCount=8
Frequency=2648435 Hz, Resolution=377.5815 ns, Timer=TSC
.NET Core SDK=2.1.4
  [Host]     : .NET Core 2.0.5 (Framework 4.6.26020.03), 64bit RyuJIT
  Job-ILFHZD : .NET Core 2.0.5 (Framework 4.6.26020.03), 64bit RyuJIT

Esprima.Benchmark.SunSpiderBenchmark

Diff Method FileName Mean Gen 0 Gen 1 Gen 2 Allocated
Old Run 3d-cube 1,167.7 ms 210000.0000 250.0000 - 842.35 MB
New 870.3 ms (-25%) 63750.0000 (-70%) 250.0000 (0%) - 257.9 MB (-69%)
Old Run 3d-morph 1,275.4 ms 191250.0000 52250.0000 6750.0000 758.14 MB
New 902.1 ms (-29%) 41500.0000 (-78%) 5500.0000 (-89%) 1250.0000 (-81%) 193.86 MB (-74%)
Old Run 3d-raytrace 1,054.0 ms 203500.0000 2250.0000 750.0000 818.78 MB
New 679.4 ms (-36%) 54250.0000 (-73%) 750.0000 (-67%) - 219.35 MB (-73%)
Old Run access-binary-trees 469.6 ms 92750.0000 1000.0000 - 373.94 MB
New 289.1 ms (-38%) 37750.0000 (-59%) 500.0000 (-50%) - 151.98 MB (-59%)
Old Run access-fannkuch 3,581.1 ms 794500.0000 250.0000 - 3178.96 MB
New 2,708.8 ms (-24%) 172250.0000 (-78%) 250.0000 (0%) - 689.77 MB (-78%)
Old Run access-nbody 1,032.7 ms 179000.0000 - - 716.74 MB
New 786.4 ms (-24%) 57500.0000 (-68%) - - 230.28 MB (-68%)
Old Run access-nsieve 1,801.7 ms 255250.0000 73000.0000 9250.0000 1058.6 MB
New 1,002.6 ms (-44%) 62750.0000 (-75%) 7750.0000 (-89%) 2750.0000 (-70%) 260.87 MB (-75%)
Old Run bitops-3bit-bits-in-byte 878.1 ms 167500.0000 - - 670.44 MB
New 597.8 ms (-32%) 56250.0000 (-66%) - - 225.67 MB (-66%)
Old Run bitops-bits-in-byte 1,325.2 ms 240500.0000 - - 962.87 MB
New 984.1 ms (-26%) 81500.0000 (-66%) - - 326.8 MB (-66%)
Old Run bitops-bitwise-and 837.5 ms 101750.0000 - - 407.43 MB
New 826.9 ms (-1%) 45500.0000 (-55%) - - 182.65 MB (-55%)
Old Run bitops-nsieve-bits 1,530.9 ms 296000.0000 31750.0000 1750.0000 1188 MB
New 1,102.1 ms (-28%) 66750.0000 (-77%) 2750.0000 (-91%) 250.0000 (-86%) 269.04 MB (-77%)
Old Run controlflow-recursive 771.4 ms 147750.0000 2750.0000 - 599.25 MB
New 384.2 ms (-50%) 58500.0000 (-60%) - - 234.15 MB (-61%)
Old Run crypto-aes 1,099.5 ms 259666.6667 333.3333 - 1042.39 MB
New 664.1 ms (-40%) 44500.0000 (-83%) 250.0000 (-25%) - 180.08 MB (-83%)
Old Run crypto-md5 648.6 ms 123000.0000 2500.0000 500.0000 494.57 MB
New 440.7 ms (-32%) 52500.0000 (-57%) 250.0000 (-90%) - 212.71 MB (-57%)
Old Run crypto-sha1 676.2 ms 126250.0000 1250.0000 250.0000 506.9 MB
New 436.8 ms (-35%) 49000.0000 (-61%) 250.0000 (-80%) - 197.82 MB (-61%)
Old Run date-format-tofte 794.8 ms 153000.0000 250.0000 - 614.79 MB
New 445.0 ms (-44%) 37250.0000 (-76%) - - 149.63 MB (-76%)
Old Run date-format-xparb 510.4 ms 51000.0000 250.0000 - 205.97 MB
New 386.7 ms (-24%) 18500.0000 (-64%) 250.0000 (0%) - 74.92 MB (-64%)
Old Run math-cordic 1,744.8 ms 297750.0000 - - 1191.14 MB
New 1,296.7 ms (-26%) 111250.0000 (-63%) - - 445.76 MB (-63%)
Old Run math-partial-sums 570.0 ms 73000.0000 - - 292.71 MB
New 458.8 ms (-20%) 26750.0000 (-63%) - - 107.29 MB (-63%)
Old Run math-spectral-norm 797.6 ms 144000.0000 - - 576.42 MB
New 489.1 ms (-39%) 49750.0000 (-65%) - - 199.05 MB (-65%)
Old Run regexp-dna 344.3 ms 3250.0000 2750.0000 2250.0000 21.48 MB
New 340.3 ms (-1%) 1500.0000 (-54%) 1250.0000 (-55%) 1000.0000 (-56%) 13.47 MB (-37%)
Old Run string-base64 790.0 ms 349916.6667 250.0000 - 1403.56 MB
New 389.2 ms (-51%) 24500.0000 (-93%) 250.0000 (0%) - 99.86 MB (-93%)
Old Run string-fasta 1,072.3 ms 204750.0000 - - 819.47 MB
New 646.6 ms (-40%) 59000.0000 (-71%) - - 236.35 MB (-71%)
Old Run string-tagcloud 965.8 ms 210083.3333 133833.3333 126916.6667 1080.11 MB
New 260.3 ms (-73%) 26250.0000 (-88%) 1750.0000 (-99%) 250.0000 (-100%) 115.39 MB (-89%)
Old Run string-unpack-code 322.3 ms 61500.0000 4000.0000 1250.0000 261.57 MB
New 205.5 ms (-36%) 28250.0000 (-54%) 8250.0000 (+106%) 1500.0000 (+20%) 123.15 MB (-53%)
Old Run string-validate-input 3,497.3 ms 1650833.3333 1567583.3333 1566333.3333 6460.11 MB
New 262.5 ms (-92%) 20750.0000 (-99%) 250.0000 (-100%) - 86.94 MB (-99%)

Jint.Benchmark.ArrayBenchmark

Diff Method N Mean Gen 0 Allocated
Old Slice 100 7.005 ms 3562.5000 14.26 MB
New 795.5 us (-89%) 150.3906 (-96%) 617.19 KB (-96%)
Old Concat 100 6.068 ms 2515.6250 10.07 MB
New 1,039.9 us (-83%) 166.9922 (-93%) 686.72 KB (-93%)
Old Unshift 100 188.747 ms 47250.0000 189.24 MB
New 33,962.7 us (-82%) 3687.5000 (-92%) 15214.06 KB (-92%)
Old Push 100 36.531 ms 8125.0000 32.67 MB
New 22,118.2 us (-39%) 1406.2500 (-83%) 5847.66 KB (-82%)
Old Index 100 27.245 ms 5812.5000 23.32 MB
New 20,948.8 us (-23%) 1250.0000 (-78%) 5172.66 KB (-78%)
Old Map 100 13.287 ms 4218.7500 16.93 MB
New 4,225.7 us (-68%) 1531.2500 (-64%) 6285.16 KB (-63%)
Old Apply 100 7.837 ms 2968.7500 11.89 MB
New 1,085.1 us (-86%) 183.5938 (-94%) 753.91 KB (-94%)
Old JsonStringifyParse 100 15.021 ms 6437.5000 25.77 MB
New 5,385.5 us (-64%) 1250.0000 (-81%) 5144.53 KB (-80%)

Jint.Benchmark.ArrayStressBenchmark

Diff Method N Mean Gen 0 Gen 1 Gen 2 Allocated
Old Jint 20 3.673 s 786750.0000 40250.0000 18500.0000 3.17 GB
New 1.935 s (-47%) 93250.0000 (-88%) 13000.0000 (-68%) - 388.02 MB (-88%)

Jint.Benchmark.EvaluationBenchmark

Diff Method N Mean Gen 0 Allocated
Old Jint 20 1.962 ms 263.6719 1.06 MB
New 1.615 ms (-18%) 138.6719 (-47%) 569.69 KB (-46%)

Jint.Benchmark.LinqJsBenchmark

Diff Method N Mean Gen 0 Gen 1 Gen 2 Allocated
Old Jint 10 104.6 ms 9312.5000 2687.5000 1062.5000 55.54 MB
New 71.69 ms (-31%) 5125.0000 (-45%) 2562.5000 (-5%) - 30.86 MB (-44%)

Jint.Benchmark.MinimalScriptBenchmark

Diff Method N Mean Gen 0 Allocated
Old Jint 10 28.47 us 9.4910 38.98 KB
New 22.68 us (-20%) 8.5144 (-10%) 34.92 KB (-10%)

Jint.Benchmark.StringIndexingBenchmark

Diff Method N Mean Gen 0 Gen 1 Allocated
Old Jint 1 2.992 s 108750.0000 250.0000 435.83 MB
New 2.606 s (-13%) 40500.0000 (-63%) 250.0000 (0%) 162.98 MB (-63%)

Jint.Benchmark.UncacheableExpressionsBenchmark

Diff Method N Mean Gen 0 Gen 1 Allocated
Old Benchmark 500 1.178 s 282466.6667 8466.6667 1.12 GB
New 511.4 ms (-57%) 100000.0000 (-65%) 1312.5000 (-84%) 400.31 MB (-64%)

@sebastienros
Copy link
Owner

I'd love to be able to create a custom project on appveyor that would only run the benchmarks before and after all the commits on a PR. That should not be that hard to do. Ideally generating a custom report, or adding a comment to the PR.

@lahma
Copy link
Collaborator Author

lahma commented Dec 22, 2017

Yes, that would be nice. You can programmatically make BenchmarkDotNet to run specific cases with wanted output. The current output has way too much noise and it would be nice to have per-benchmark results to that values wouldn't be scaled to share same mins and maxes.

lahma added a commit to lahma/jint that referenced this issue Dec 23, 2017
lahma added a commit to lahma/jint that referenced this issue Jan 2, 2018
* remove LINQ from hot paths
* use List<T> where possible to get rid of memory allocations
* cache empty completions
lahma added a commit to lahma/jint that referenced this issue Jan 2, 2018
* use separate fields for commonly accessed prototype and constructor
lahma added a commit to lahma/jint that referenced this issue Jan 2, 2018
* this helps with array optimization branch as this can be considered master version
lahma added a commit to lahma/jint that referenced this issue Jun 24, 2018
lahma added a commit to lahma/jint that referenced this issue Jun 24, 2018
sebastienros pushed a commit that referenced this issue Jun 26, 2018
* #451 optimize declarative environment record handling for functions

* use explicit type field checks as small methods won't inline to small methods
* seal some classes

* #451 inline more hot paths

* #451 use == instead of Equals for doubles as strings, less IL code

* #451 minimize work done in hot paths

* #451 use Dictionary directly in ObjectInstance as it caters better performance

* #451 tweak property setting via direct field

* #451 more tweaks

* #451 use ArrayPrototype.ConstructFast when possible

* #451 improve bounds check performance for .NET Core 2.1
lahma added a commit to lahma/jint that referenced this issue Jun 27, 2018
* inherit directly from JsValue
* merge MruPropertyCache2 into DeclarativeEnvironmentRecord
* remove MruPropertyCaches as obsolete
* add direct field access to properties that don't inline
* make Binding struct
* use correct overload for GetValue directly
* remove some range checks by casting to uint
* don't re-assign array values when unnecessary
lahma added a commit to lahma/jint that referenced this issue Jun 27, 2018
* inline some getter calls
* eliminate some bounds checks
lahma added a commit to lahma/jint that referenced this issue Jun 30, 2018
* faster lookups, cache results
* use readonly for DiyFp and in to prevent defensive copies
lahma added a commit to lahma/jint that referenced this issue Jul 1, 2018
* optimize FindBestMatch
* remove obsolete code
* prefer foreach for arrays
lahma added a commit to lahma/jint that referenced this issue Jul 8, 2018
maximburyak pushed a commit to maximburyak/jint that referenced this issue Jul 11, 2018
maximburyak pushed a commit to maximburyak/jint that referenced this issue Jul 11, 2018
maximburyak pushed a commit to maximburyak/jint that referenced this issue Jul 11, 2018
maximburyak pushed a commit to maximburyak/jint that referenced this issue Jul 11, 2018
maximburyak pushed a commit to maximburyak/jint that referenced this issue Jul 11, 2018
…tienros#517)

* sebastienros#451 optimize declarative environment record handling for functions

* use explicit type field checks as small methods won't inline to small methods
* seal some classes

* sebastienros#451 inline more hot paths

* sebastienros#451 use == instead of Equals for doubles as strings, less IL code

* sebastienros#451 minimize work done in hot paths

* sebastienros#451 use Dictionary directly in ObjectInstance as it caters better performance

* sebastienros#451 tweak property setting via direct field

* sebastienros#451 more tweaks

* sebastienros#451 use ArrayPrototype.ConstructFast when possible

* sebastienros#451 improve bounds check performance for .NET Core 2.1
@lahma
Copy link
Collaborator Author

lahma commented Aug 13, 2018

There's a new release on NuGet so time to share latest numbers. This time memory usage was further reduced and some micro optimizations were made.

2.11.58 vs 3.0.0-beta-1249

BenchmarkDotNet=v0.10.14, OS=Windows 10.0.17713
Intel Core i7-6820HQ CPU 2.70GHz (Skylake), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=2.1.302
  [Host]     : .NET Core 2.0.9 (CoreCLR 4.6.26614.01, CoreFX 4.6.26614.01), 64bit RyuJIT
  DefaultJob : .NET Core 2.0.9 (CoreCLR 4.6.26614.01, CoreFX 4.6.26614.01), 64bit RyuJIT

Esprima.Benchmark.DromaeoBenchmark

Diff Method FileName Mean Gen 0 Gen 1 Gen 2 Allocated
Old Run dromaeo-3d-cube 162.75 ms 32250.0000 250.0000 - 131.94 MB
New 71.57 ms (-56%) 1312.5000 (-96%) 250.0000 (0%) - 7541784 B (-95%)
Old Run dromaeo-core-eval 33.69 ms 12250.0000 - - 49.68 MB
New 14.85 ms (-56%) 62.5000 (-99%) - - 304976 B (-99%)
Old Run dromaeo-object-array 1,955.27 ms 435000.0000 7500.0000 2000.0000 1763.05 MB
New 165.39 ms (-92%) 42437.5000 (-90%) 1937.5000 (-74%) 937.5000 (-53%) 182590916 B (-90%)
Old Run dromaeo-object-regexp 3,462.88 ms 373000.0000 88750.0000 44166.6667 1939.8 MB
New 887.14 ms (-74%) 53375.0000 (-86%) 31625.0000 (-64%) 21250.0000 (-52%) 424122202 B (-79%)
Old Run dromaeo-object-string 6,357.63 ms 4638000.0000 2800083.3333 2786416.6667 17418.93 MB
New 1,196.51 ms (-81%) 219562.5000 (-95%) 176875.0000 (-94%) 173937.5000 (-94%) 1426761422 B (-92%)
Old Run dromaeo-string-base64 510.55 ms 247750.0000 1500.0000 500.0000 997.99 MB
New NA N/A N/A N/A N/A

Esprima.Benchmark.SunSpiderBenchmark

Diff Method FileName Mean Gen 0 Gen 1 Gen 2 Allocated
Old Run 3d-cube 1,130.3 ms 200000.0000 250.0000 - 803.08 MB
New 555.9 ms (-51%) 11375.0000 (-94%) 312.5000 (+25%) - 49874152 B (-94%)
Old Run 3d-morph 1,099.6 ms 173750.0000 47750.0000 8000.0000 685.08 MB
New 546.9 ms (-50%) 11812.5000 (-93%) 2500.0000 (-95%) 1062.5000 (-87%) 71333952 B (-90%)
Old Run 3d-raytrace 987.0 ms 185000.0000 1250.0000 250.0000 743.91 MB
New 460.3 ms (-53%) 19000.0000 (-90%) 875.0000 (-30%) 125.0000 (-50%) 82207560 B (-89%)
Old Run access-binary-trees 432.8 ms 83250.0000 750.0000 - 335.17 MB
New 184.1 ms (-57%) 13000.0000 (-84%) 375.0000 (-50%) - 56692984 B (-84%)
Old Run access-fannkuch 3,322.7 ms 753750.0000 250.0000 - 3015.43 MB
New 1,765.4 ms (-47%) 9437.5000 (-99%) 125.0000 (-50%) - 39708288 B (-99%)
Old Run access-nbody 981.3 ms 159500.0000 - - 638.35 MB
New 566.0 ms (-42%) 12812.5000 (-92%) - - 53803424 B (-92%)
Old Run access-nsieve 1,161.6 ms 241250.0000 21000.0000 5000.0000 1009.95 MB
New 663.9 ms (-43%) 15375.0000 (-94%) 3937.5000 (-81%) 1875.0000 (-63%) 76642850 B (-93%)
Old Run bitops-3bit-bits-in-byte 703.7 ms 132000.0000 - - 528.68 MB
New 348.1 ms (-51%) 12625.0000 (-90%) - - 53208176 B (-90%)
Old Run bitops-bits-in-byte 1,120.7 ms 195750.0000 - - 783.66 MB
New 612.1 ms (-45%) 8187.5000 (-96%) - - 34358224 B (-96%)
Old Run bitops-bitwise-and 766.1 ms 86750.0000 - - 347.92 MB
New 477.2 ms (-38%) 9000.0000 (-90%) - - 37758744 B (-90%)
Old Run bitops-nsieve-bits 1,299.6 ms 253000.0000 27250.0000 1750.0000 1015.1 MB
New 674.9 ms (-48%) 21625.0000 (-91%) 125.0000 (-100%) - 92795080 B (-91%)
Old Run controlflow-recursive 713.5 ms 135250.0000 2500.0000 - 544.98 MB
New 243.2 ms (-66%) 16187.5000 (-88%) - - 68108952 B (-88%)
Old Run crypto-aes 1,022.6 ms 244250.0000 250.0000 - 981.45 MB
New 424.2 ms (-59%) 5125.0000 (-98%) 250.0000 (0%) - 23551011 B (-98%)
Old Run crypto-md5 577.0 ms 108250.0000 2500.0000 500.0000 436.1 MB
New 282.8 ms (-51%) 23875.0000 (-78%) 250.0000 (-90%) 62.5000 (-88%) 102475720 B (-78%)
Old Run crypto-sha1 601.2 ms 110500.0000 1000.0000 250.0000 444.44 MB
New 271.9 ms (-55%) 19125.0000 (-83%) 250.0000 (-75%) - 82209984 B (-82%)
Old Run date-format-tofte 705.5 ms 145500.0000 250.0000 - 583.33 MB
New 301.7 ms (-57%) 11187.5000 (-92%) - - 47181728 B (-92%)
Old Run date-format-xparb 488.0 ms 45500.0000 250.0000 - 184.11 MB
New 285.1 ms (-42%) 9062.5000 (-80%) 250.0000 (0%) - 38892896 B (-80%)
Old Run math-cordic 1,646.3 ms 284750.0000 - - 1139.63 MB
New 864.0 ms (-48%) 16687.5000 (-94%) 62.5000 - 70234680 B (-94%)
Old Run math-partial-sums 516.1 ms 63000.0000 - - 252.49 MB
New 282.0 ms (-45%) 7000.0000 (-89%) - - 29428272 B (-89%)
Old Run math-spectral-norm 733.9 ms 129000.0000 - - 516.31 MB
New 304.5 ms (-59%) 13125.0000 (-90%) - - 55206048 B (-90%)
Old Run regexp-dna 344.3 ms 2750.0000 2250.0000 1750.0000 20.84 MB
New 346.4 ms (+1%) 2187.5000 (-20%) 1875.0000 (-17%) 1500.0000 (-14%) 14197886 B (-35%)
Old Run string-base64 735.0 ms 335750.0000 250.0000 - 1346.89 MB
New NA N/A N/A N/A N/A
Old Run string-fasta 1,054.2 ms 201000.0000 - - 804.94 MB
New 394.3 ms (-63%) 24562.5000 (-88%) 62.5000 - 103246608 B (-88%)
Old Run string-tagcloud 936.2 ms 204500.0000 136583.3333 128083.3333 1052.84 MB
New 182.5 ms (-81%) 12375.0000 (-94%) 1562.5000 (-99%) 562.5000 (-100%) 61680540 B (-94%)
Old Run string-unpack-code 324.8 ms 60000.0000 4000.0000 1250.0000 255.12 MB
New 147.1 ms (-55%) 11000.0000 (-82%) 3375.0000 (-16%) 875.0000 (-30%) 57449168 B (-79%)
Old Run string-validate-input 3,326.3 ms 1641750.0000 1566083.3333 1565500.0000 6427.62 MB
New 168.1 ms (-95%) 6750.0000 (-100%) 375.0000 (-100%) 62.5000 (-100%) 32537144 B (-100%)

Jint.Benchmark.ArrayBenchmark

Diff Method N Mean Gen 0 Allocated
Old Slice 100 6.998 ms 3562.5000 14.27 MB
New 444.6 us (-94%) 161.1328 (-95%) 660.16 KB (-95%)
Old Concat 100 6.146 ms 2515.6250 10.09 MB
New 495.4 us (-92%) 175.7813 (-93%) 720.31 KB (-93%)
Old Unshift 100 190.064 ms 47125.0000 188.62 MB
New 18,753.2 us (-90%) 3562.5000 (-92%) 14672.66 KB (-92%)
Old Push 100 36.007 ms 8000.0000 32.01 MB
New 10,397.4 us (-72%) 343.7500 (-96%) 1438.28 KB (-96%)
Old Index 100 27.367 ms 5781.2500 23.15 MB
New 11,708.2 us (-58%) 390.6250 (-93%) 1637.5 KB (-93%)
Old Map 100 13.261 ms 4187.5000 16.78 MB
New 2,599.5 us (-81%) 488.2813 (-88%) 2008.59 KB (-88%)
Old Apply 100 8.070 ms 2968.7500 11.91 MB
New 609.9 us (-93%) 188.4766 (-94%) 774.22 KB (-94%)
Old JsonStringifyParse 100 14.856 ms 6437.5000 25.79 MB
New 4,623.7 us (-70%) 1273.4375 (-80%) 5242.19 KB (-80%)

Jint.Benchmark.ArrayStressBenchmark

Diff Method N Mean Gen 0 Gen 1 Gen 2 Allocated
Old Jint 20 3.633 s 771250.0000 40250.0000 16500.0000 3.11 GB
New 568.9 ms (-85%) 60000.0000 (-92%) 2937.5000 (-93%) - 245.9 MB (-92%)

Jint.Benchmark.EvaluationBenchmark

Diff Method N Mean Gen 0 Allocated
Old Jint 20 1.051 ms 246.0938 1015.63 KB
New 666.9 us (-38%) 116.2109 (-53%) 477.34 KB (-53%)

Jint.Benchmark.LinqJsBenchmark

Diff Method N Mean Gen 0 Gen 1 Gen 2 Allocated
Old Jint 10 113.8 ms 8562.5000 3000.0000 1437.5000 50.91 MB
New 72.58 ms (-36%) 5062.5000 (-41%) 2500.0000 (-17%) - 30.5 MB (-40%)

Jint.Benchmark.MinimalScriptBenchmark

Diff Method N Mean Gen 0 Allocated
Old Jint 10 28.36 us 9.1248 37.42 KB
New 20.25 us (-29%) 8.1482 (-11%) 33.44 KB (-11%)

Jint.Benchmark.UncacheableExpressionsBenchmark

Diff Method N Mean Gen 0 Gen 1 Allocated
Old Benchmark 500 1.169 s 263458.3333 78020.8333 1.08 GB
New 285.3 ms (-76%) 33750.0000 (-87%) - 135.01 MB (-88%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants