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

Optimize global identifier access a bit and reduce allocations #741

Merged
merged 7 commits into from May 30, 2020

Conversation

lahma
Copy link
Collaborator

@lahma lahma commented May 28, 2020

Paying some debt from let/const, let see what low-hanging fruit we can find.

@lahma lahma marked this pull request as ready for review May 29, 2020 19:46
@lahma
Copy link
Collaborator Author

lahma commented May 30, 2020

Esprima.Benchmark.SunSpiderBenchmark

Diff Method FileName Mean Error Gen 0 Gen 1 Gen 2 Allocated
Old Run 3d-cube 636.8 ms 1.82 ms 12000.0000 1000.0000 0.0000 52.64 MB
New 658.7 ms (+3%) 3.14 ms 12000.0000 (0%) 1000.0000 (0%) 0.0000 52.59 MB (0%)
Old Run 3d-morph 518.2 ms 1.85 ms 12000.0000 2000.0000 0.0000 78.1 MB
New 474.4 ms (-8%) 2.12 ms 12000.0000 (0%) 2000.0000 (0%) 0.0000 75.12 MB (-4%)
Old Run 3d-raytrace 440.2 ms 1.07 ms 23000.0000 3000.0000 0.0000 96.09 MB
New 439.4 ms (0%) 1.00 ms 23000.0000 (0%) 3000.0000 (0%) 0.0000 96 MB (0%)
Old Run access-binary-trees 215.0 ms 0.35 ms 20000.0000 1000.0000 0.0000 83.13 MB
New 212.3 ms (-1%) 1.13 ms 20000.0000 (0%) 2000.0000 (+100%) 0.0000 83.01 MB (0%)
Old Run access-fannkuch 1,561.0 ms 5.38 ms 9000.0000 0.0000 0.0000 37.95 MB
New 1,560.9 ms (0%) 5.01 ms 9000.0000 (0%) 0.0000 0.0000 37.94 MB (0%)
Old Run access-nbody 538.5 ms 1.59 ms 15000.0000 0.0000 0.0000 62.82 MB
New 517.3 ms (-4%) 2.83 ms 15000.0000 (0%) 0.0000 0.0000 62.81 MB (0%)
Old Run access-nsieve 589.1 ms 1.61 ms 17000.0000 5000.0000 1000.0000 85.24 MB
New 592.4 ms (+1%) 3.62 ms 17000.0000 (0%) 5000.0000 (0%) 1000.0000 (0%) 85.24 MB (0%)
Old Run bitop(...)-byte [24] 395.1 ms 1.00 ms 18000.0000 0.0000 0.0000 75.18 MB
New 407.1 ms (+3%) 1.16 ms 18000.0000 (0%) 0.0000 0.0000 75.18 MB (0%)
Old Run bitops-bits-in-byte 643.8 ms 2.47 ms 12000.0000 0.0000 0.0000 49.87 MB
New 668.9 ms (+4%) 2.89 ms 12000.0000 (0%) 0.0000 0.0000 49.87 MB (0%)
Old Run bitops-bitwise-and 651.0 ms 1.91 ms 18000.0000 0.0000 0.0000 77.53 MB
New 287.0 ms (-56%) 1.84 ms 13000.0000 (-28%) 0.0000 0.0000 54.64 MB (-30%)
Old Run bitops-nsieve-bits 600.4 ms 2.25 ms 24000.0000 1000.0000 0.0000 99.28 MB
New 595.4 ms (-1%) 1.95 ms 24000.0000 (0%) 1000.0000 (0%) 0.0000 98.44 MB (-1%)
Old Run contr(...)rsive [21] 307.9 ms 1.19 ms 32000.0000 0.0000 0.0000 128.3 MB
New 299.5 ms (-3%) 0.87 ms 32000.0000 (0%) 0.0000 0.0000 128.3 MB (0%)
Old Run crypto-aes 417.4 ms 0.91 ms 6000.0000 1000.0000 0.0000 28.21 MB
New 401.8 ms (-4%) 0.49 ms 6000.0000 (0%) 1000.0000 (0%) 0.0000 28.21 MB (0%)
Old Run crypto-md5 268.8 ms 1.98 ms 24000.0000 2000.0000 0.0000 99.17 MB
New 258.0 ms (-4%) 0.79 ms 24000.0000 (0%) 2000.0000 (0%) 0.0000 99.15 MB (0%)
Old Run crypto-sha1 271.4 ms 0.48 ms 21000.0000 1000.0000 0.0000 86.89 MB
New 263.7 ms (-3%) 0.44 ms 21000.0000 (0%) 1000.0000 (0%) 0.0000 86.88 MB (0%)
Old Run date-format-tofte 310.9 ms 0.46 ms 17000.0000 1000.0000 0.0000 70.32 MB
New 317.5 ms (+2%) 0.67 ms 17000.0000 (0%) 0.0000 (-100%) 0.0000 69.69 MB (-1%)
Old Run date-format-xparb 154.2 ms 0.58 ms 7000.0000 1000.0000 0.0000 29.76 MB
New 141.4 ms (-8%) 0.43 ms 7000.0000 (0%) 1000.0000 (0%) 0.0000 29.49 MB (-1%)
Old Run math-cordic 972.7 ms 2.65 ms 31000.0000 0.0000 0.0000 126.66 MB
New 913.7 ms (-6%) 2.69 ms 31000.0000 (0%) 0.0000 0.0000 124.18 MB (-2%)
Old Run math-partial-sums 387.9 ms 0.47 ms 15000.0000 0.0000 0.0000 63.5 MB
New 331.0 ms (-15%) 1.42 ms 14000.0000 (-7%) 0.0000 0.0000 56.72 MB (-11%)
Old Run math-spectral-norm 304.3 ms 0.95 ms 18000.0000 0.0000 0.0000 72.29 MB
New 303.3 ms (0%) 0.83 ms 18000.0000 (0%) 0.0000 0.0000 72.28 MB (0%)
Old Run regexp-dna 450.8 ms 0.97 ms 0.0000 0.0000 0.0000 18.31 MB
New 436.4 ms (-3%) 1.46 ms 0.0000 0.0000 0.0000 18.3 MB (0%)
Old Run string-base64 239.3 ms 0.92 ms 3000.0000 1000.0000 0.0000 13.76 MB
New 227.5 ms (-5%) 0.64 ms 3000.0000 (0%) 1000.0000 (0%) 0.0000 12.38 MB (-10%)
Old Run string-fasta 558.6 ms 1.26 ms 41000.0000 0.0000 0.0000 165.85 MB
New 527.5 ms (-6%) 0.65 ms 40000.0000 (-2%) 0.0000 0.0000 161.73 MB (-2%)
Old Run string-tagcloud 200.3 ms 0.66 ms 11000.0000 1000.0000 0.0000 56 MB
New 198.3 ms (-1%) 0.59 ms 11000.0000 (0%) 1000.0000 (0%) 0.0000 56 MB (0%)
Old Run string-unpack-code 204.7 ms 0.54 ms 20000.0000 3000.0000 1000.0000 89.33 MB
New 209.5 ms (+2%) 2.43 ms 20000.0000 (0%) 3000.0000 (0%) 1000.0000 (0%) 89.33 MB (0%)
Old Run strin(...)input [21] 1,263.4 ms 16.24 ms 1161000.0000 1141000.0000 1140000.0000 6211.46 MB
New 1,286.7 ms (+2%) 14.41 ms 1160000.0000 (0%) 1140000.0000 (0%) 1139000.0000 (0%) 6211.18 MB (0%)

Jint.Benchmark.ArrayBenchmark

Diff Method N Mean Error Gen 0 Gen 1 Gen 2 Allocated
Old Slice 100 546.8 μs 1.03 μs 181.6406 0.0000 0.0000 742.19 KB
New 539.2 μs (-1%) 1.22 μs 180.6641 (-1%) 0.0000 0.0000 739.84 KB (0%)
Old Concat 100 754.0 μs 1.85 μs 216.7969 0.0000 0.0000 886.72 KB
New 735.2 μs (-2%) 3.64 μs 215.8203 (0%) 0.0000 0.0000 884.38 KB (0%)
Old Unshift 100 22,095.3 μs 156.94 μs 3875.0000 0.0000 0.0000 15831.25 KB
New 17,989.2 μs (-19%) 113.02 μs 3718.7500 (-4%) 0.0000 0.0000 15229.69 KB (-4%)
Old Push 100 14,016.3 μs 51.30 μs 640.6250 0.0000 0.0000 2679.69 KB
New 9,806.0 μs (-30%) 40.84 μs 500.0000 (-22%) 0.0000 0.0000 2075.07 KB (-23%)
Old Index 100 15,463.1 μs 32.26 μs 828.1250 0.0000 0.0000 3422.66 KB
New 10,485.9 μs (-32%) 12.05 μs 687.5000 (-17%) 0.0000 0.0000 2810.94 KB (-18%)
Old Map 100 5,057.3 μs 23.63 μs 1156.2500 0.0000 0.0000 4726.58 KB
New 4,936.5 μs (-2%) 23.77 μs 1148.4375 (-1%) 0.0000 0.0000 4713.28 KB (0%)
Old Apply 100 771.7 μs 2.63 μs 215.8203 0.0000 0.0000 884.38 KB
New 751.4 μs (-3%) 3.10 μs 213.8672 (-1%) 0.0000 0.0000 877.34 KB (-1%)
Old JsonStringifyParse 100 4,797.2 μs 11.44 μs 1304.6875 0.0000 0.0000 5332.06 KB
New 5,032.1 μs (+5%) 18.13 μs 1296.8750 (-1%) 0.0000 0.0000 5325.03 KB (0%)
Old FilterWithString 100 53,161.0 μs 556.09 μs 10700.0000 0.0000 0.0000 43885.16 KB
New 53,584.9 μs (+1%) 318.64 μs 10700.0000 (0%) 0.0000 0.0000 43880.47 KB (0%)

Jint.Benchmark.DromaeoBenchmark

Diff Method FileName Mean Error Gen 0 Gen 1 Gen 2 Allocated
Old Run dromaeo-3d-cube 71.86 ms 0.169 ms 1571.4286 285.7143 0.0000 8614.83 KB
New 71.37 ms (-1%) 0.197 ms 1571.4286 (0%) 428.5714 (+50%) 0.0000 8591.82 KB (0%)
Old Run dromaeo-core-eval 19.94 ms 0.140 ms 125.0000 0.0000 0.0000 523.86 KB
New 20.62 ms (+3%) 0.079 ms 125.0000 (0%) 0.0000 0.0000 516.75 KB (-1%)
Old Run dromaeo-object-array 202.70 ms 0.766 ms 41000.0000 2000.0000 0.0000 175886.27 KB
New 173.02 ms (-15%) 0.299 ms 41000.0000 (0%) 2000.0000 (0%) 0.0000 174220.34 KB (-1%)
Old Run droma(...)egexp [21] 777.24 ms 8.664 ms 42000.0000 23000.0000 13000.0000 373138.83 KB
New 707.44 ms (-9%) 13.006 ms 44000.0000 (+5%) 27000.0000 (+17%) 18000.0000 (+38%) 373249.54 KB (0%)
Old Run droma(...)tring [21] 714.37 ms 4.881 ms 109000.0000 73000.0000 72000.0000 1349482.74 KB
New 597.43 ms (-16%) 7.110 ms 108000.0000 (-1%) 74000.0000 (+1%) 72000.0000 (0%) 1341766.19 KB (-1%)
Old Run droma(...)ase64 [21] 156.76 ms 0.772 ms 2000.0000 0.0000 0.0000 8961.59 KB
New 148.97 ms (-5%) 2.250 ms 2000.0000 (0%) 0.0000 0.0000 8672.23 KB (-3%)

Jint.Benchmark.UncacheableExpressionsBenchmark

Diff Method N Mean Error Gen 0 Gen 1 Gen 2 Allocated
Old Benchmark 500 310.2 ms 1.08 ms 49000.0000 2000.0000 0.0000 195.92 MB
New 320.9 ms (+3%) 2.42 ms 49000.0000 (0%) 2000.0000 (0%) 0.0000 195.92 MB (0%)
Old Benchmark 500 235.5 ms 0.93 ms 43000.0000 11000.0000 0.0000 173.43 MB
New 245.0 ms (+4%) 0.97 ms 43000.0000 (0%) 11000.0000 (0%) 0.0000 173.43 MB (0%)

@lahma lahma merged commit 56ca37b into sebastienros:dev May 30, 2020
@lahma lahma deleted the optimize-global-access branch May 30, 2020 16:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant