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

Async/Await parse #836

Merged
merged 31 commits into from
Oct 13, 2020
Merged

Async/Await parse #836

merged 31 commits into from
Oct 13, 2020

Conversation

Lan2u
Copy link

@Lan2u Lan2u commented Oct 9, 2020

This Pull Request addresses the parse side of #818 .

It changes the following:

  • (Mainly) add support for parsing of async function decl, async function expression and await expression.
  • (Side-effect) tidy up / moving of non-async function parsing into own folders + some additional tests

The run methods return undefined (rather than an unimplemented! panic) while waiting for an execution implementation.

@Lan2u Lan2u changed the title Async parse WIP: Async parse Oct 9, 2020
@codecov
Copy link

codecov bot commented Oct 9, 2020

Codecov Report

Merging #836 into master will decrease coverage by 0.33%.
The diff coverage is 45.51%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #836      +/-   ##
==========================================
- Coverage   59.37%   59.03%   -0.34%     
==========================================
  Files         157      164       +7     
  Lines       10036    10217     +181     
==========================================
+ Hits         5959     6032      +73     
- Misses       4077     4185     +108     
Impacted Files Coverage Δ
boa/src/syntax/ast/node/await_expr/mod.rs 0.00% <0.00%> (ø)
boa/src/syntax/parser/expression/await_expr.rs 0.00% <0.00%> (ø)
boa/src/syntax/parser/expression/mod.rs 78.48% <ø> (ø)
...rser/expression/primary/function_expression/mod.rs 64.70% <ø> (ø)
boa/src/syntax/ast/node/mod.rs 48.03% <16.66%> (-1.56%) ⬇️
...ax/ast/node/declaration/async_function_decl/mod.rs 22.22% <22.22%> (ø)
...ax/ast/node/declaration/async_function_expr/mod.rs 24.00% <24.00%> (ø)
boa/src/syntax/parser/expression/primary/mod.rs 76.92% <33.33%> (-2.67%) ⬇️
boa/src/syntax/ast/keyword.rs 47.42% <50.00%> (+0.05%) ⬆️
boa/src/syntax/parser/statement/mod.rs 53.08% <50.00%> (-1.01%) ⬇️
... and 23 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e82dee1...bc4779f. Read the comment docs.

@github-actions
Copy link

github-actions bot commented Oct 9, 2020

Benchmark for 8afaa30

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 342.3±6.98ns 356.4±11.66ns -3.96%
Arithmetic operations (Full) 222.3±5.98µs 216.8±5.04µs +2.54%
Array access (Execution) 7.3±0.19µs 7.4±0.20µs -1.35%
Array access (Full) 241.7±4.75µs 232.8±5.68µs +3.82%
Array creation (Execution) 2.6±0.05ms 2.7±0.06ms -3.70%
Array creation (Full) 3.0±0.04ms 2.8±0.06ms +7.14%
Array pop (Execution) 959.9±21.35µs 986.7±22.96µs -2.72%
Array pop (Full) 1408.6±29.13µs 1389.0±39.42µs +1.41%
Boolean Object Access (Execution) 4.4±0.08µs 4.3±0.11µs +2.33%
Boolean Object Access (Full) 232.7±5.88µs 227.8±4.72µs +2.15%
Clean js (Execution) 657.6±13.52µs 654.7±14.98µs +0.44%
Clean js (Full) 930.8±13.45µs 933.2±20.88µs -0.26%
Clean js (Parser) 35.4±0.78µs 34.7±0.73µs +2.02%
Create Realm 446.6±9.98ns 433.9±10.27ns +2.93%
Dynamic Object Property Access (Execution) 5.1±0.12µs 5.2±0.13µs -1.92%
Dynamic Object Property Access (Full) 231.2±4.27µs 230.4±5.12µs +0.35%
Expression (Parser) 6.6±0.16µs 7.0±0.07µs -5.71%
Fibonacci (Execution) 761.6±14.10µs 757.6±19.82µs +0.53%
Fibonacci (Full) 1021.5±26.33µs 1029.3±24.44µs -0.76%
For loop (Execution) 20.7±0.44µs 21.1±0.50µs -1.90%
For loop (Full) 253.8±5.67µs 255.0±7.17µs -0.47%
For loop (Parser) 17.4±0.40µs 17.2±0.33µs +1.16%
Goal Symbols (Parser) 11.9±0.29µs 11.8±0.33µs +0.85%
Hello World (Parser) 3.0±0.09µs 3.1±0.04µs -3.23%
Long file (Parser) 709.5±14.50ns 720.3±14.31ns -1.50%
Mini js (Execution) 590.1±12.70µs 588.2±12.90µs +0.32%
Mini js (Full) 833.6±18.36µs 832.2±15.69µs +0.17%
Mini js (Parser) 30.6±0.60µs 30.3±0.69µs +0.99%
Number Object Access (Execution) 3.5±0.08µs 3.4±0.09µs +2.94%
Number Object Access (Full) 225.3±5.83µs 224.6±5.80µs +0.31%
Object Creation (Execution) 4.5±0.12µs 4.5±0.14µs 0.00%
Object Creation (Full) 228.1±4.56µs 225.1±4.92µs +1.33%
RegExp (Execution) 8.9±0.17µs 8.7±0.20µs +2.30%
RegExp (Full) 236.8±4.77µs 232.8±5.81µs +1.72%
RegExp Literal (Execution) 9.9±0.27µs 9.6±0.27µs +3.13%
RegExp Literal (Full) 238.0±5.93µs 235.4±6.13µs +1.10%
RegExp Literal Creation (Execution) 9.0±0.21µs 8.6±0.21µs +4.65%
RegExp Literal Creation (Full) 230.9±5.37µs 226.7±5.49µs +1.85%
Static Object Property Access (Execution) 4.6±0.10µs 4.6±0.11µs 0.00%
Static Object Property Access (Full) 228.0±4.25µs 229.1±5.49µs -0.48%
String Object Access (Execution) 6.6±0.14µs 6.4±0.17µs +3.12%
String Object Access (Full) 233.3±5.65µs 231.8±4.84µs +0.65%
String comparison (Execution) 6.1±0.12µs 6.1±0.14µs 0.00%
String comparison (Full) 234.6±5.13µs 232.3±5.88µs +0.99%
String concatenation (Execution) 4.9±0.11µs 4.9±0.10µs 0.00%
String concatenation (Full) 227.2±5.04µs 227.2±5.49µs 0.00%
String copy (Execution) 3.8±0.09µs 3.8±0.09µs 0.00%
String copy (Full) 225.6±3.75µs 224.0±4.59µs +0.71%
Symbols (Execution) 3.2±0.07µs 3.2±0.08µs 0.00%
Symbols (Full) 213.6±4.47µs 209.9±4.47µs +1.76%

@github-actions
Copy link

github-actions bot commented Oct 9, 2020

Benchmark for 5ad0aff

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 365.9±4.61ns 364.6±0.66ns +0.36%
Arithmetic operations (Full) 232.5±0.46µs 234.1±0.34µs -0.68%
Array access (Execution) 7.8±0.04µs 7.8±0.03µs 0.00%
Array access (Full) 249.8±4.29µs 253.7±0.40µs -1.54%
Array creation (Execution) 2.8±0.01ms 2.9±0.01ms -3.45%
Array creation (Full) 3.1±0.00ms 3.1±0.01ms 0.00%
Array pop (Execution) 1029.2±5.40µs 1066.0±4.13µs -3.45%
Array pop (Full) 1464.5±3.28µs 1466.4±4.66µs -0.13%
Boolean Object Access (Execution) 4.7±0.02µs 4.6±0.01µs +2.17%
Boolean Object Access (Full) 241.8±2.96µs 245.7±0.44µs -1.59%
Clean js (Execution) 692.8±6.13µs 698.0±2.95µs -0.74%
Clean js (Full) 990.2±6.70µs 989.4±4.96µs +0.08%
Clean js (Parser) 37.4±0.12µs 37.1±0.11µs +0.81%
Create Realm 473.0±1.40ns 467.4±2.10ns +1.20%
Dynamic Object Property Access (Execution) 5.6±0.12µs 5.5±0.04µs +1.82%
Dynamic Object Property Access (Full) 243.9±1.17µs 248.1±0.84µs -1.69%
Expression (Parser) 7.1±0.02µs 6.9±0.01µs +2.90%
Fibonacci (Execution) 817.6±3.97µs 814.1±2.25µs +0.43%
Fibonacci (Full) 1072.9±7.47µs 1089.1±1.73µs -1.49%
For loop (Execution) 22.1±0.09µs 22.3±0.07µs -0.90%
For loop (Full) 265.7±1.14µs 273.4±0.43µs -2.82%
For loop (Parser) 18.2±0.06µs 18.0±0.04µs +1.11%
Goal Symbols (Parser) 12.6±0.04µs 12.5±0.02µs +0.80%
Hello World (Parser) 3.2±0.01µs 3.1±0.01µs +3.23%
Long file (Parser) 761.0±1.47ns 757.9±1.48ns +0.41%
Mini js (Execution) 624.4±4.24µs 631.1±4.49µs -1.06%
Mini js (Full) 884.6±4.39µs 892.4±3.79µs -0.87%
Mini js (Parser) 32.5±0.11µs 32.4±0.05µs +0.31%
Number Object Access (Execution) 3.6±0.01µs 3.7±0.01µs -2.70%
Number Object Access (Full) 239.0±0.83µs 241.6±0.52µs -1.08%
Object Creation (Execution) 4.7±0.04µs 4.7±0.01µs 0.00%
Object Creation (Full) 239.9±0.93µs 246.5±0.36µs -2.68%
RegExp (Execution) 9.5±0.06µs 9.2±0.02µs +3.26%
RegExp (Full) 246.7±0.99µs 250.5±0.89µs -1.52%
RegExp Literal (Execution) 10.5±0.04µs 10.2±0.04µs +2.94%
RegExp Literal (Full) 249.5±0.68µs 254.2±0.64µs -1.85%
RegExp Literal Creation (Execution) 9.5±0.06µs 9.2±0.05µs +3.26%
RegExp Literal Creation (Full) 244.5±0.83µs 247.8±1.05µs -1.33%
Static Object Property Access (Execution) 4.9±0.02µs 5.0±0.01µs -2.00%
Static Object Property Access (Full) 241.4±0.87µs 245.5±0.54µs -1.67%
String Object Access (Execution) 6.9±0.05µs 7.0±0.09µs -1.43%
String Object Access (Full) 247.9±0.89µs 248.5±0.53µs -0.24%
String comparison (Execution) 6.5±0.06µs 6.5±0.05µs 0.00%
String comparison (Full) 246.0±0.48µs 250.0±0.43µs -1.60%
String concatenation (Execution) 5.2±0.02µs 5.2±0.02µs 0.00%
String concatenation (Full) 240.8±0.46µs 244.8±0.78µs -1.63%
String copy (Execution) 4.0±0.02µs 4.0±0.01µs 0.00%
String copy (Full) 232.8±0.67µs 238.3±2.63µs -2.31%
Symbols (Execution) 3.4±0.01µs 3.4±0.02µs 0.00%
Symbols (Full) 222.3±0.73µs 226.4±0.49µs -1.81%

@github-actions
Copy link

github-actions bot commented Oct 9, 2020

Benchmark for fecde2c

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 355.2±6.36ns 353.8±6.01ns +0.40%
Arithmetic operations (Full) 229.0±3.59µs 227.8±4.38µs +0.53%
Array access (Execution) 7.7±0.16µs 7.6±0.14µs +1.32%
Array access (Full) 248.9±4.05µs 248.3±5.82µs +0.24%
Array creation (Execution) 2.8±0.05ms 2.8±0.04ms 0.00%
Array creation (Full) 3.1±0.06ms 3.0±0.05ms +3.33%
Array pop (Execution) 1024.9±20.31µs 1044.7±19.35µs -1.90%
Array pop (Full) 1451.5±19.41µs 1424.9±19.76µs +1.87%
Boolean Object Access (Execution) 4.5±0.07µs 4.5±0.07µs 0.00%
Boolean Object Access (Full) 238.5±4.50µs 239.8±4.27µs -0.54%
Clean js (Execution) 684.9±17.35µs 690.0±8.57µs -0.74%
Clean js (Full) 964.1±15.33µs 964.3±16.48µs -0.02%
Clean js (Parser) 36.5±0.59µs 36.1±0.57µs +1.11%
Create Realm 462.0±7.42ns 461.8±8.57ns +0.04%
Dynamic Object Property Access (Execution) 5.4±0.10µs 5.4±0.10µs 0.00%
Dynamic Object Property Access (Full) 243.9±3.07µs 241.4±3.54µs +1.04%
Expression (Parser) 6.9±0.10µs 6.7±0.13µs +2.99%
Fibonacci (Execution) 799.0±18.70µs 790.0±11.40µs +1.14%
Fibonacci (Full) 1033.5±18.64µs 1060.7±13.49µs -2.56%
For loop (Execution) 21.7±0.35µs 22.1±0.38µs -1.81%
For loop (Full) 265.4±4.30µs 265.3±4.45µs +0.04%
For loop (Parser) 17.7±0.32µs 17.6±0.39µs +0.57%
Goal Symbols (Parser) 12.2±0.20µs 12.1±0.17µs +0.83%
Hello World (Parser) 3.1±0.06µs 3.0±0.06µs +3.33%
Long file (Parser) 738.4±12.56ns 750.8±11.70ns -1.65%
Mini js (Execution) 611.9±12.53µs 617.1±11.05µs -0.84%
Mini js (Full) 871.1±10.92µs 870.2±14.67µs +0.10%
Mini js (Parser) 31.7±0.65µs 31.7±0.44µs 0.00%
Number Object Access (Execution) 3.6±0.07µs 3.6±0.07µs 0.00%
Number Object Access (Full) 235.6±4.51µs 234.6±4.15µs +0.43%
Object Creation (Execution) 4.6±0.08µs 4.6±0.07µs 0.00%
Object Creation (Full) 239.6±3.96µs 237.2±3.43µs +1.01%
RegExp (Execution) 9.6±0.24µs 9.1±0.12µs +5.49%
RegExp (Full) 244.9±4.52µs 244.3±3.73µs +0.25%
RegExp Literal (Execution) 10.4±0.20µs 10.2±0.19µs +1.96%
RegExp Literal (Full) 247.1±3.75µs 243.6±4.29µs +1.44%
RegExp Literal Creation (Execution) 9.6±0.14µs 9.0±0.20µs +6.67%
RegExp Literal Creation (Full) 241.0±4.12µs 239.9±3.96µs +0.46%
Static Object Property Access (Execution) 4.8±0.07µs 4.9±0.10µs -2.04%
Static Object Property Access (Full) 239.5±3.98µs 235.9±3.84µs +1.53%
String Object Access (Execution) 6.9±0.12µs 6.8±0.12µs +1.47%
String Object Access (Full) 243.3±4.12µs 242.2±4.54µs +0.45%
String comparison (Execution) 6.2±0.11µs 6.2±0.11µs 0.00%
String comparison (Full) 243.0±3.56µs 245.9±3.48µs -1.18%
String concatenation (Execution) 5.0±0.10µs 5.0±0.09µs 0.00%
String concatenation (Full) 242.7±5.73µs 237.4±3.85µs +2.23%
String copy (Execution) 4.1±0.05µs 3.9±0.07µs +5.13%
String copy (Full) 230.3±5.17µs 229.8±3.64µs +0.22%
Symbols (Execution) 3.3±0.05µs 3.3±0.05µs 0.00%
Symbols (Full) 221.5±3.35µs 218.9±3.62µs +1.19%

@github-actions
Copy link

Benchmark for b4b3537

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 356.3±5.17ns 355.9±7.06ns +0.11%
Arithmetic operations (Full) 225.7±3.79µs 226.3±4.62µs -0.27%
Array access (Execution) 7.6±0.14µs 7.7±0.10µs -1.30%
Array access (Full) 248.4±4.09µs 249.9±4.05µs -0.60%
Array creation (Execution) 2.7±0.03ms 2.8±0.05ms -3.57%
Array creation (Full) 3.0±0.05ms 3.0±0.05ms 0.00%
Array pop (Execution) 1005.8±17.83µs 1044.5±21.89µs -3.71%
Array pop (Full) 1448.1±30.33µs 1446.2±19.89µs +0.13%
Boolean Object Access (Execution) 4.5±0.09µs 4.5±0.08µs 0.00%
Boolean Object Access (Full) 240.0±5.21µs 241.5±3.51µs -0.62%
Clean js (Execution) 672.7±16.78µs 685.2±13.86µs -1.82%
Clean js (Full) 969.0±15.78µs 978.7±13.95µs -0.99%
Clean js (Parser) 36.7±0.44µs 36.3±0.68µs +1.10%
Create Realm 458.7±10.66ns 475.5±8.24ns -3.53%
Dynamic Object Property Access (Execution) 5.5±0.10µs 5.5±0.09µs 0.00%
Dynamic Object Property Access (Full) 244.7±4.17µs 244.2±3.73µs +0.20%
Expression (Parser) 6.8±0.15µs 6.8±0.08µs 0.00%
Fibonacci (Execution) 808.0±12.13µs 799.1±13.90µs +1.11%
Fibonacci (Full) 1065.4±30.00µs 1048.7±21.45µs +1.59%
For loop (Execution) 22.1±0.30µs 22.0±0.45µs +0.45%
For loop (Full) 259.4±7.20µs 266.3±3.41µs -2.59%
For loop (Parser) 18.2±0.25µs 17.4±0.37µs +4.60%
Goal Symbols (Parser) 12.3±0.26µs 12.1±0.23µs +1.65%
Hello World (Parser) 3.1±0.04µs 3.1±0.05µs 0.00%
Long file (Parser) 750.2±11.63ns 746.0±11.96ns +0.56%
Mini js (Execution) 617.7±9.65µs 614.3±14.04µs +0.55%
Mini js (Full) 872.4±17.12µs 868.1±15.45µs +0.50%
Mini js (Parser) 32.4±0.30µs 31.9±0.50µs +1.57%
Number Object Access (Execution) 3.5±0.06µs 3.6±0.07µs -2.78%
Number Object Access (Full) 239.9±4.20µs 235.2±4.92µs +2.00%
Object Creation (Execution) 4.6±0.09µs 4.7±0.06µs -2.13%
Object Creation (Full) 239.5±3.01µs 237.4±3.96µs +0.88%
RegExp (Execution) 9.3±0.14µs 8.9±0.19µs +4.49%
RegExp (Full) 240.9±4.45µs 249.7±3.42µs -3.52%
RegExp Literal (Execution) 10.6±0.17µs 10.2±0.23µs +3.92%
RegExp Literal (Full) 248.1±3.33µs 247.9±3.64µs +0.08%
RegExp Literal Creation (Execution) 9.3±0.16µs 9.1±0.17µs +2.20%
RegExp Literal Creation (Full) 241.6±4.66µs 240.3±4.86µs +0.54%
Static Object Property Access (Execution) 4.8±0.14µs 4.9±0.09µs -2.04%
Static Object Property Access (Full) 240.4±3.46µs 239.3±5.28µs +0.46%
String Object Access (Execution) 6.8±0.13µs 6.7±0.14µs +1.49%
String Object Access (Full) 245.8±3.09µs 240.1±4.44µs +2.37%
String comparison (Execution) 6.5±0.09µs 6.2±0.13µs +4.84%
String comparison (Full) 239.7±5.53µs 244.5±4.53µs -1.96%
String concatenation (Execution) 5.1±0.10µs 5.1±0.14µs 0.00%
String concatenation (Full) 237.5±4.57µs 236.9±4.17µs +0.25%
String copy (Execution) 4.0±0.08µs 3.9±0.06µs +2.56%
String copy (Full) 231.6±6.18µs 229.7±4.37µs +0.83%
Symbols (Execution) 3.4±0.05µs 3.3±0.06µs +3.03%
Symbols (Full) 218.6±3.67µs 221.9±3.06µs -1.49%

@github-actions
Copy link

Benchmark for 0464a7d

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 388.4±23.68ns 380.5±11.56ns +2.08%
Arithmetic operations (Full) 244.5±9.47µs 250.7±7.43µs -2.47%
Array access (Execution) 7.9±0.39µs 8.2±0.25µs -3.66%
Array access (Full) 271.1±9.03µs 272.2±9.53µs -0.40%
Array creation (Execution) 2.6±0.09ms 2.8±0.08ms -7.14%
Array creation (Full) 3.0±0.09ms 3.0±0.19ms 0.00%
Array pop (Execution) 974.6±63.43µs 1014.6±30.89µs -3.94%
Array pop (Full) 1482.9±52.39µs 1426.8±45.81µs +3.93%
Boolean Object Access (Execution) 4.7±0.18µs 4.6±0.20µs +2.17%
Boolean Object Access (Full) 260.8±10.53µs 262.5±8.73µs -0.65%
Clean js (Execution) 693.2±25.47µs 712.8±22.73µs -2.75%
Clean js (Full) 984.6±57.41µs 1016.1±39.27µs -3.10%
Clean js (Parser) 39.2±1.55µs 38.9±1.27µs +0.77%
Create Realm 462.1±20.96ns 462.5±26.77ns -0.09%
Dynamic Object Property Access (Execution) 5.9±0.28µs 6.4±0.50µs -7.81%
Dynamic Object Property Access (Full) 270.9±9.48µs 277.9±9.81µs -2.52%
Expression (Parser) 6.8±0.30µs 7.1±0.21µs -4.23%
Fibonacci (Execution) 880.2±38.19µs 916.5±29.89µs -3.96%
Fibonacci (Full) 1147.8±44.16µs 1202.8±146.53µs -4.57%
For loop (Execution) 23.8±2.46µs 23.1±1.18µs +3.03%
For loop (Full) 290.0±13.13µs 286.7±11.28µs +1.15%
For loop (Parser) 19.3±0.98µs 18.7±0.62µs +3.21%
Goal Symbols (Parser) 13.0±0.48µs 12.6±0.59µs +3.17%
Hello World (Parser) 3.2±0.16µs 3.3±0.14µs -3.03%
Long file (Parser) 803.5±26.43ns 800.0±31.98ns +0.44%
Mini js (Execution) 622.4±30.33µs 651.0±26.57µs -4.39%
Mini js (Full) 894.0±34.57µs 899.3±28.44µs -0.59%
Mini js (Parser) 34.5±1.25µs 34.3±1.40µs +0.58%
Number Object Access (Execution) 3.7±0.10µs 3.7±0.12µs 0.00%
Number Object Access (Full) 257.3±9.49µs 261.8±11.72µs -1.72%
Object Creation (Execution) 5.0±0.17µs 5.1±0.16µs -1.96%
Object Creation (Full) 263.8±9.75µs 265.1±8.89µs -0.49%
RegExp (Execution) 10.0±0.36µs 9.7±0.43µs +3.09%
RegExp (Full) 267.1±7.75µs 267.3±8.06µs -0.07%
RegExp Literal (Execution) 11.4±0.34µs 10.8±0.39µs +5.56%
RegExp Literal (Full) 270.3±13.28µs 280.2±15.96µs -3.53%
RegExp Literal Creation (Execution) 9.6±0.32µs 9.6±0.42µs 0.00%
RegExp Literal Creation (Full) 266.4±11.19µs 266.6±10.43µs -0.08%
Static Object Property Access (Execution) 5.3±0.18µs 5.2±0.16µs +1.92%
Static Object Property Access (Full) 262.8±9.87µs 267.4±10.42µs -1.72%
String Object Access (Execution) 7.1±0.31µs 7.1±0.39µs 0.00%
String Object Access (Full) 262.7±8.65µs 275.2±11.56µs -4.54%
String comparison (Execution) 6.8±0.62µs 6.6±0.25µs +3.03%
String comparison (Full) 271.3±11.96µs 275.1±20.97µs -1.38%
String concatenation (Execution) 5.6±0.26µs 5.4±0.17µs +3.70%
String concatenation (Full) 265.5±10.94µs 261.9±8.65µs +1.37%
String copy (Execution) 4.3±0.17µs 4.2±0.16µs +2.38%
String copy (Full) 252.4±8.92µs 259.8±11.59µs -2.85%
Symbols (Execution) 3.7±0.19µs 3.5±0.20µs +5.71%
Symbols (Full) 231.5±11.17µs 236.4±11.14µs -2.07%

@github-actions
Copy link

Benchmark for f06c10f

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 379.4±19.04ns 380.7±18.80ns -0.34%
Arithmetic operations (Full) 240.8±11.00µs 237.7±10.53µs +1.30%
Array access (Execution) 8.0±0.03µs 8.5±0.84µs -5.88%
Array access (Full) 253.8±3.07µs 259.2±9.39µs -2.08%
Array creation (Execution) 2.8±0.01ms 3.0±0.15ms -6.67%
Array creation (Full) 3.3±0.18ms 3.1±0.15ms +6.45%
Array pop (Execution) 1014.5±4.37µs 1066.5±4.72µs -4.88%
Array pop (Full) 1523.4±20.87µs 1498.3±59.39µs +1.68%
Boolean Object Access (Execution) 4.6±0.02µs 4.8±0.40µs -4.17%
Boolean Object Access (Full) 243.4±0.79µs 259.2±18.50µs -6.10%
Clean js (Execution) 708.7±74.46µs 731.8±31.74µs -3.16%
Clean js (Full) 1020.2±36.02µs 993.5±6.84µs +2.69%
Clean js (Parser) 37.0±0.32µs 37.1±0.10µs -0.27%
Create Realm 473.4±1.64ns 475.4±19.60ns -0.42%
Dynamic Object Property Access (Execution) 5.6±0.02µs 5.8±0.33µs -3.45%
Dynamic Object Property Access (Full) 261.6±13.63µs 244.7±0.90µs +6.91%
Expression (Parser) 7.0±0.07µs 7.2±0.58µs -2.78%
Fibonacci (Execution) 813.5±2.83µs 851.8±47.24µs -4.50%
Fibonacci (Full) 1136.9±68.34µs 1108.3±54.07µs +2.58%
For loop (Execution) 22.2±0.06µs 23.0±1.21µs -3.48%
For loop (Full) 283.9±25.20µs 275.1±19.09µs +3.20%
For loop (Parser) 18.0±0.12µs 18.6±1.10µs -3.23%
Goal Symbols (Parser) 13.0±0.54µs 13.2±0.84µs -1.52%
Hello World (Parser) 3.2±0.02µs 3.3±0.21µs -3.03%
Long file (Parser) 775.3±39.23ns 768.0±42.54ns +0.95%
Mini js (Execution) 621.2±4.51µs 629.4±24.56µs -1.30%
Mini js (Full) 927.6±28.68µs 889.9±7.01µs +4.24%
Mini js (Parser) 32.4±0.17µs 32.2±0.10µs +0.62%
Number Object Access (Execution) 3.8±0.26µs 3.8±0.21µs 0.00%
Number Object Access (Full) 240.6±1.29µs 251.3±22.91µs -4.26%
Object Creation (Execution) 4.9±0.05µs 4.7±0.02µs +4.26%
Object Creation (Full) 242.9±2.41µs 251.0±12.18µs -3.23%
RegExp (Execution) 9.9±0.87µs 9.7±0.68µs +2.06%
RegExp (Full) 258.2±10.53µs 254.4±10.32µs +1.49%
RegExp Literal (Execution) 11.0±0.52µs 10.8±0.67µs +1.85%
RegExp Literal (Full) 249.8±1.06µs 262.2±26.44µs -4.73%
RegExp Literal Creation (Execution) 9.7±0.43µs 9.9±0.63µs -2.02%
RegExp Literal Creation (Full) 260.3±12.64µs 256.6±14.89µs +1.44%
Static Object Property Access (Execution) 5.1±0.04µs 5.0±0.03µs +2.00%
Static Object Property Access (Full) 245.0±0.88µs 267.8±33.47µs -8.51%
String Object Access (Execution) 7.2±0.40µs 7.0±0.03µs +2.86%
String Object Access (Full) 259.7±17.21µs 264.9±25.17µs -1.96%
String comparison (Execution) 6.8±0.50µs 6.5±0.17µs +4.62%
String comparison (Full) 258.8±13.32µs 256.9±11.53µs +0.74%
String concatenation (Execution) 5.5±0.19µs 5.4±0.23µs +1.85%
String concatenation (Full) 253.6±14.47µs 244.4±14.93µs +3.76%
String copy (Execution) 4.4±0.48µs 4.2±0.29µs +4.76%
String copy (Full) 237.7±1.07µs 246.3±8.87µs -3.49%
Symbols (Execution) 3.4±0.01µs 3.5±0.19µs -2.86%
Symbols (Full) 225.8±0.39µs 230.8±13.57µs -2.17%

@github-actions
Copy link

Benchmark for cf5ebf5

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 306.8±14.25ns 359.4±9.08ns -14.64%
Arithmetic operations (Full) 203.5±9.38µs 208.4±9.66µs -2.35%
Array access (Execution) 6.9±0.36µs 7.5±0.16µs -8.00%
Array access (Full) 211.6±12.48µs 220.5±10.52µs -4.04%
Array creation (Execution) 2.4±0.10ms 2.8±0.05ms -14.29%
Array creation (Full) 2.7±0.11ms 2.7±0.12ms 0.00%
Array pop (Execution) 892.0±33.58µs 1015.5±19.53µs -12.16%
Array pop (Full) 1286.7±48.71µs 1287.7±49.18µs -0.08%
Boolean Object Access (Execution) 4.0±0.23µs 4.4±0.07µs -9.09%
Boolean Object Access (Full) 208.0±7.96µs 212.3±9.02µs -2.03%
Clean js (Execution) 601.3±36.28µs 665.1±16.98µs -9.59%
Clean js (Full) 866.0±35.61µs 868.4±35.24µs -0.28%
Clean js (Parser) 32.6±1.66µs 33.0±1.50µs -1.21%
Create Realm 409.8±17.51ns 414.0±18.92ns -1.01%
Dynamic Object Property Access (Execution) 4.9±0.23µs 5.3±0.08µs -7.55%
Dynamic Object Property Access (Full) 217.6±8.88µs 230.1±7.42µs -5.43%
Expression (Parser) 6.0±0.26µs 6.2±0.25µs -3.23%
Fibonacci (Execution) 708.0±33.97µs 762.8±26.11µs -7.18%
Fibonacci (Full) 944.0±36.57µs 1010.4±55.49µs -6.57%
For loop (Execution) 19.2±1.05µs 20.0±1.02µs -4.00%
For loop (Full) 227.5±12.77µs 257.5±5.61µs -11.65%
For loop (Parser) 16.2±0.83µs 15.6±0.64µs +3.85%
Goal Symbols (Parser) 11.0±0.48µs 10.7±0.58µs +2.80%
Hello World (Parser) 2.7±0.11µs 2.8±0.13µs -3.57%
Long file (Parser) 685.9±28.51ns 693.7±34.38ns -1.12%
Mini js (Execution) 533.9±27.24µs 602.8±11.34µs -11.43%
Mini js (Full) 767.1±31.36µs 778.2±36.28µs -1.43%
Mini js (Parser) 28.3±1.42µs 28.4±1.12µs -0.35%
Number Object Access (Execution) 3.1±0.13µs 3.2±0.11µs -3.13%
Number Object Access (Full) 214.7±9.91µs 212.8±9.48µs +0.89%
Object Creation (Execution) 4.1±0.19µs 4.4±0.22µs -6.82%
Object Creation (Full) 209.9±12.98µs 229.3±7.59µs -8.46%
RegExp (Execution) 8.5±0.42µs 8.0±0.36µs +6.25%
RegExp (Full) 217.1±10.89µs 226.7±7.62µs -4.23%
RegExp Literal (Execution) 9.3±0.45µs 8.9±0.33µs +4.49%
RegExp Literal (Full) 222.7±9.16µs 227.7±9.19µs -2.20%
RegExp Literal Creation (Execution) 8.4±0.49µs 8.1±0.47µs +3.70%
RegExp Literal Creation (Full) 215.7±11.68µs 223.1±7.19µs -3.32%
Static Object Property Access (Execution) 4.4±0.16µs 4.7±0.07µs -6.38%
Static Object Property Access (Full) 210.1±10.14µs 225.3±9.66µs -6.75%
String Object Access (Execution) 6.0±0.34µs 6.5±0.10µs -7.69%
String Object Access (Full) 216.2±9.92µs 214.0±9.20µs +1.03%
String comparison (Execution) 5.8±0.28µs 5.6±0.26µs +3.57%
String comparison (Full) 209.9±9.11µs 220.3±10.36µs -4.72%
String concatenation (Execution) 4.5±0.20µs 4.6±0.20µs -2.17%
String concatenation (Full) 206.5±12.97µs 211.9±7.00µs -2.55%
String copy (Execution) 3.5±0.17µs 3.5±0.17µs 0.00%
String copy (Full) 202.8±10.66µs 201.7±11.01µs +0.55%
Symbols (Execution) 3.0±0.15µs 3.0±0.11µs 0.00%
Symbols (Full) 192.5±8.68µs 212.7±3.64µs -9.50%

@github-actions
Copy link

Benchmark for d56494a

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 381.3±23.69ns 379.9±22.48ns +0.37%
Arithmetic operations (Full) 257.8±22.43µs 252.9±14.38µs +1.94%
Array access (Execution) 8.6±0.52µs 8.8±0.54µs -2.27%
Array access (Full) 293.4±18.66µs 281.1±14.28µs +4.38%
Array creation (Execution) 3.0±0.17ms 3.0±0.16ms 0.00%
Array creation (Full) 3.1±0.19ms 3.2±0.20ms -3.13%
Array pop (Execution) 1068.3±58.04µs 1063.5±52.39µs +0.45%
Array pop (Full) 1535.5±85.81µs 1541.3±90.17µs -0.38%
Boolean Object Access (Execution) 5.0±0.32µs 5.1±0.35µs -1.96%
Boolean Object Access (Full) 274.4±15.78µs 269.2±16.05µs +1.93%
Clean js (Execution) 793.6±48.17µs 768.9±44.06µs +3.21%
Clean js (Full) 1092.4±85.74µs 1090.3±66.83µs +0.19%
Clean js (Parser) 42.5±2.88µs 41.6±2.72µs +2.16%
Create Realm 496.0±27.31ns 505.3±30.88ns -1.84%
Dynamic Object Property Access (Execution) 6.4±0.39µs 6.1±0.34µs +4.92%
Dynamic Object Property Access (Full) 283.2±17.64µs 293.0±16.60µs -3.34%
Expression (Parser) 7.9±0.50µs 8.1±0.48µs -2.47%
Fibonacci (Execution) 955.2±53.21µs 937.2±47.87µs +1.92%
Fibonacci (Full) 1255.7±69.04µs 1233.4±76.31µs +1.81%
For loop (Execution) 24.9±1.44µs 24.2±1.30µs +2.89%
For loop (Full) 322.7±17.60µs 319.9±18.95µs +0.88%
For loop (Parser) 20.7±1.37µs 19.9±1.18µs +4.02%
Goal Symbols (Parser) 13.4±0.80µs 13.4±0.80µs 0.00%
Hello World (Parser) 3.6±0.24µs 3.6±0.23µs 0.00%
Long file (Parser) 875.3±70.18ns 830.3±39.68ns +5.42%
Mini js (Execution) 665.7±30.41µs 691.2±38.71µs -3.69%
Mini js (Full) 952.3±47.13µs 969.8±51.81µs -1.80%
Mini js (Parser) 36.8±2.44µs 36.5±2.43µs +0.82%
Number Object Access (Execution) 4.1±0.26µs 4.0±0.34µs +2.50%
Number Object Access (Full) 269.0±14.55µs 278.6±16.19µs -3.45%
Object Creation (Execution) 5.3±0.33µs 5.3±0.30µs 0.00%
Object Creation (Full) 270.9±15.03µs 286.0±16.58µs -5.28%
RegExp (Execution) 10.1±0.67µs 10.6±0.67µs -4.72%
RegExp (Full) 284.3±14.20µs 275.9±16.02µs +3.04%
RegExp Literal (Execution) 11.2±0.65µs 11.3±0.64µs -0.88%
RegExp Literal (Full) 292.1±17.87µs 286.7±18.61µs +1.88%
RegExp Literal Creation (Execution) 10.1±0.67µs 10.7±0.86µs -5.61%
RegExp Literal Creation (Full) 280.1±18.30µs 270.5±19.17µs +3.55%
Static Object Property Access (Execution) 5.5±0.54µs 5.4±0.48µs +1.85%
Static Object Property Access (Full) 284.7±19.80µs 285.2±20.13µs -0.18%
String Object Access (Execution) 7.5±0.52µs 7.5±0.48µs 0.00%
String Object Access (Full) 291.3±16.99µs 276.8±16.36µs +5.24%
String comparison (Execution) 7.2±0.46µs 6.8±0.34µs +5.88%
String comparison (Full) 278.6±16.34µs 270.5±13.34µs +2.99%
String concatenation (Execution) 5.8±0.34µs 6.2±0.37µs -6.45%
String concatenation (Full) 270.8±15.78µs 280.4±18.21µs -3.42%
String copy (Execution) 4.4±0.20µs 4.4±0.43µs 0.00%
String copy (Full) 266.2±18.41µs 259.4±11.71µs +2.62%
Symbols (Execution) 3.7±0.24µs 3.8±0.22µs -2.63%
Symbols (Full) 258.8±17.42µs 259.5±36.70µs -0.27%

@github-actions
Copy link

Benchmark for db5b328

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 407.7±26.67ns 384.2±14.39ns +6.12%
Arithmetic operations (Full) 263.4±16.06µs 268.9±15.87µs -2.05%
Array access (Execution) 9.2±0.93µs 8.9±0.57µs +3.37%
Array access (Full) 298.5±21.12µs 290.0±19.72µs +2.93%
Array creation (Execution) 3.0±0.16ms 3.0±0.17ms 0.00%
Array creation (Full) 3.2±0.16ms 3.2±0.16ms 0.00%
Array pop (Execution) 1098.3±66.84µs 1137.4±79.56µs -3.44%
Array pop (Full) 1545.7±74.28µs 1615.7±95.07µs -4.33%
Boolean Object Access (Execution) 5.3±0.43µs 4.9±0.33µs +8.16%
Boolean Object Access (Full) 277.1±14.63µs 277.7±15.45µs -0.22%
Clean js (Execution) 762.4±52.51µs 759.9±32.41µs +0.33%
Clean js (Full) 1070.6±78.72µs 1093.6±63.50µs -2.10%
Clean js (Parser) 41.5±2.21µs 41.8±2.15µs -0.72%
Create Realm 539.3±30.24ns 504.6±29.36ns +6.88%
Dynamic Object Property Access (Execution) 6.2±0.35µs 6.3±0.36µs -1.59%
Dynamic Object Property Access (Full) 286.2±18.39µs 286.1±35.12µs +0.03%
Expression (Parser) 7.4±0.41µs 7.6±0.46µs -2.63%
Fibonacci (Execution) 983.3±50.93µs 978.5±58.81µs +0.49%
Fibonacci (Full) 1271.3±73.92µs 1255.2±85.13µs +1.28%
For loop (Execution) 26.4±1.73µs 25.8±2.53µs +2.33%
For loop (Full) 321.7±20.12µs 310.2±17.44µs +3.71%
For loop (Parser) 20.5±1.32µs 19.9±1.12µs +3.02%
Goal Symbols (Parser) 13.4±0.71µs 13.6±0.85µs -1.47%
Hello World (Parser) 3.3±0.19µs 3.4±0.21µs -2.94%
Long file (Parser) 843.6±48.13ns 861.5±55.73ns -2.08%
Mini js (Execution) 690.4±39.39µs 691.6±46.35µs -0.17%
Mini js (Full) 949.7±45.16µs 968.6±41.90µs -1.95%
Mini js (Parser) 36.5±1.24µs 36.0±2.68µs +1.39%
Number Object Access (Execution) 4.0±0.21µs 3.8±0.23µs +5.26%
Number Object Access (Full) 278.9±17.07µs 270.1±15.18µs +3.26%
Object Creation (Execution) 5.5±0.30µs 5.6±0.36µs -1.79%
Object Creation (Full) 288.5±23.84µs 284.1±12.59µs +1.55%
RegExp (Execution) 10.2±0.48µs 10.6±0.78µs -3.77%
RegExp (Full) 286.6±22.52µs 290.0±14.41µs -1.17%
RegExp Literal (Execution) 11.6±0.74µs 11.5±0.73µs +0.87%
RegExp Literal (Full) 292.7±20.90µs 299.0±21.80µs -2.11%
RegExp Literal Creation (Execution) 10.2±0.50µs 10.3±0.98µs -0.97%
RegExp Literal Creation (Full) 275.2±17.37µs 283.1±19.47µs -2.79%
Static Object Property Access (Execution) 5.7±0.42µs 5.7±0.34µs 0.00%
Static Object Property Access (Full) 284.8±23.12µs 275.4±15.74µs +3.41%
String Object Access (Execution) 7.9±0.57µs 7.5±0.50µs +5.33%
String Object Access (Full) 280.6±14.81µs 282.5±15.75µs -0.67%
String comparison (Execution) 7.2±0.84µs 7.0±0.34µs +2.86%
String comparison (Full) 286.5±13.86µs 284.8±18.06µs +0.60%
String concatenation (Execution) 6.0±0.43µs 5.8±0.40µs +3.45%
String concatenation (Full) 279.1±16.94µs 279.8±12.99µs -0.25%
String copy (Execution) 4.5±0.26µs 4.6±0.46µs -2.17%
String copy (Full) 270.7±13.62µs 280.0±16.58µs -3.32%
Symbols (Execution) 3.9±0.23µs 3.9±0.34µs 0.00%
Symbols (Full) 264.3±20.63µs 265.0±28.08µs -0.26%

@github-actions
Copy link

Benchmark for e4e169e

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 382.2±22.68ns 381.6±21.76ns +0.16%
Arithmetic operations (Full) 262.7±16.30µs 274.9±16.61µs -4.44%
Array access (Execution) 8.9±0.55µs 9.0±0.55µs -1.11%
Array access (Full) 285.8±17.05µs 299.3±18.05µs -4.51%
Array creation (Execution) 3.0±0.18ms 3.0±0.17ms 0.00%
Array creation (Full) 3.1±0.17ms 3.1±0.18ms 0.00%
Array pop (Execution) 1069.8±54.81µs 1088.6±73.24µs -1.73%
Array pop (Full) 1591.0±113.47µs 1507.8±61.97µs +5.52%
Boolean Object Access (Execution) 4.9±0.26µs 5.0±0.31µs -2.00%
Boolean Object Access (Full) 274.6±18.45µs 276.0±15.08µs -0.51%
Clean js (Execution) 776.5±47.90µs 758.7±49.47µs +2.35%
Clean js (Full) 1061.1±52.62µs 1077.2±78.82µs -1.49%
Clean js (Parser) 41.4±2.13µs 41.1±2.77µs +0.73%
Create Realm 510.8±30.51ns 502.9±27.84ns +1.57%
Dynamic Object Property Access (Execution) 6.2±0.41µs 6.3±0.39µs -1.59%
Dynamic Object Property Access (Full) 287.2±16.56µs 280.0±12.08µs +2.57%
Expression (Parser) 7.5±0.42µs 7.5±0.53µs 0.00%
Fibonacci (Execution) 960.9±55.11µs 939.4±44.82µs +2.29%
Fibonacci (Full) 1267.6±83.32µs 1234.3±70.15µs +2.70%
For loop (Execution) 24.8±1.50µs 24.5±1.25µs +1.22%
For loop (Full) 310.7±16.68µs 315.3±20.67µs -1.46%
For loop (Parser) 20.0±1.44µs 20.4±1.29µs -1.96%
Goal Symbols (Parser) 13.4±0.73µs 13.3±0.69µs +0.75%
Hello World (Parser) 3.6±0.22µs 3.5±0.19µs +2.86%
Long file (Parser) 859.0±58.45ns 839.1±40.55ns +2.37%
Mini js (Execution) 681.1±38.31µs 657.1±23.37µs +3.65%
Mini js (Full) 975.2±57.15µs 985.4±64.02µs -1.04%
Mini js (Parser) 36.3±2.09µs 35.3±1.58µs +2.83%
Number Object Access (Execution) 3.9±0.24µs 4.0±0.24µs -2.50%
Number Object Access (Full) 262.5±13.70µs 275.1±17.66µs -4.58%
Object Creation (Execution) 5.3±0.24µs 5.5±0.37µs -3.64%
Object Creation (Full) 268.8±12.57µs 278.1±15.59µs -3.34%
RegExp (Execution) 10.2±0.61µs 10.5±0.72µs -2.86%
RegExp (Full) 279.7±21.77µs 297.3±18.34µs -5.92%
RegExp Literal (Execution) 11.4±0.62µs 11.7±0.66µs -2.56%
RegExp Literal (Full) 283.0±18.26µs 287.1±15.76µs -1.43%
RegExp Literal Creation (Execution) 10.5±0.76µs 10.5±0.71µs 0.00%
RegExp Literal Creation (Full) 283.1±16.77µs 283.0±18.10µs +0.04%
Static Object Property Access (Execution) 5.6±0.28µs 5.6±0.30µs 0.00%
Static Object Property Access (Full) 273.3±17.07µs 276.1±11.48µs -1.01%
String Object Access (Execution) 7.8±0.65µs 7.5±0.42µs +4.00%
String Object Access (Full) 276.6±18.14µs 275.0±11.86µs +0.58%
String comparison (Execution) 7.0±0.34µs 7.1±0.39µs -1.41%
String comparison (Full) 273.6±14.74µs 280.8±24.47µs -2.56%
String concatenation (Execution) 5.9±0.35µs 6.2±0.38µs -4.84%
String concatenation (Full) 266.3±13.92µs 270.2±12.29µs -1.44%
String copy (Execution) 4.6±0.26µs 4.6±0.29µs 0.00%
String copy (Full) 265.4±16.40µs 268.6±16.91µs -1.19%
Symbols (Execution) 3.8±0.20µs 3.8±0.23µs 0.00%
Symbols (Full) 249.7±13.95µs 264.3±20.62µs -5.52%

@github-actions
Copy link

Benchmark for a6b1cbd

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 382.6±28.04ns 362.2±24.97ns +5.63%
Arithmetic operations (Full) 264.4±10.31µs 258.3±11.95µs +2.36%
Array access (Execution) 8.8±0.27µs 8.5±0.36µs +3.53%
Array access (Full) 289.1±10.01µs 286.8±16.47µs +0.80%
Array creation (Execution) 3.0±0.10ms 3.1±0.26ms -3.23%
Array creation (Full) 3.2±0.10ms 3.1±0.14ms +3.23%
Array pop (Execution) 1084.0±30.52µs 1097.4±48.13µs -1.22%
Array pop (Full) 1535.6±149.04µs 1534.3±48.58µs +0.08%
Boolean Object Access (Execution) 5.1±0.19µs 5.1±0.30µs 0.00%
Boolean Object Access (Full) 279.2±18.27µs 274.2±22.64µs +1.82%
Clean js (Execution) 750.5±34.49µs 721.2±30.47µs +4.06%
Clean js (Full) 1058.4±50.47µs 1073.9±25.13µs -1.44%
Clean js (Parser) 41.8±2.17µs 42.1±1.34µs -0.71%
Create Realm 515.2±10.91ns 491.5±21.68ns +4.82%
Dynamic Object Property Access (Execution) 6.3±0.22µs 6.3±0.32µs 0.00%
Dynamic Object Property Access (Full) 288.5±11.68µs 281.7±18.87µs +2.41%
Expression (Parser) 7.5±0.55µs 7.3±0.25µs +2.74%
Fibonacci (Execution) 943.7±24.28µs 946.4±35.49µs -0.29%
Fibonacci (Full) 1263.0±46.41µs 1190.8±65.63µs +6.06%
For loop (Execution) 25.0±0.76µs 25.8±1.36µs -3.10%
For loop (Full) 314.9±20.29µs 303.9±12.01µs +3.62%
For loop (Parser) 20.2±0.62µs 19.7±0.64µs +2.54%
Goal Symbols (Parser) 13.4±0.48µs 13.5±0.48µs -0.74%
Hello World (Parser) 3.5±0.13µs 3.4±0.18µs +2.94%
Long file (Parser) 844.8±24.89ns 849.1±24.60ns -0.51%
Mini js (Execution) 665.0±28.89µs 666.1±35.40µs -0.17%
Mini js (Full) 948.0±35.67µs 958.3±33.12µs -1.07%
Mini js (Parser) 36.0±1.40µs 36.4±1.05µs -1.10%
Number Object Access (Execution) 4.0±0.18µs 3.7±0.18µs +8.11%
Number Object Access (Full) 280.8±14.42µs 273.6±14.76µs +2.63%
Object Creation (Execution) 5.5±0.21µs 5.4±0.28µs +1.85%
Object Creation (Full) 272.5±13.35µs 276.9±7.07µs -1.59%
RegExp (Execution) 10.2±0.49µs 10.5±0.35µs -2.86%
RegExp (Full) 289.1±11.88µs 288.5±5.80µs +0.21%
RegExp Literal (Execution) 11.4±0.37µs 11.6±0.35µs -1.72%
RegExp Literal (Full) 290.8±16.91µs 287.1±12.18µs +1.29%
RegExp Literal Creation (Execution) 10.2±0.49µs 10.3±0.28µs -0.97%
RegExp Literal Creation (Full) 282.9±8.61µs 277.0±6.90µs +2.13%
Static Object Property Access (Execution) 5.7±0.26µs 5.6±0.18µs +1.79%
Static Object Property Access (Full) 278.4±11.42µs 279.8±11.54µs -0.50%
String Object Access (Execution) 7.6±0.39µs 7.1±0.46µs +7.04%
String Object Access (Full) 277.4±9.21µs 275.4±7.85µs +0.73%
String comparison (Execution) 7.2±0.46µs 6.7±0.30µs +7.46%
String comparison (Full) 281.4±8.86µs 289.8±8.32µs -2.90%
String concatenation (Execution) 5.8±0.20µs 5.7±0.32µs +1.75%
String concatenation (Full) 274.4±15.31µs 271.8±8.72µs +0.96%
String copy (Execution) 4.6±0.23µs 4.4±0.19µs +4.55%
String copy (Full) 268.2±7.04µs 268.9±10.58µs -0.26%
Symbols (Execution) 3.7±0.11µs 3.8±0.13µs -2.63%
Symbols (Full) 250.6±8.51µs 248.4±9.39µs +0.89%

Co-authored-by: Halid Odat <halidodat@gmail.com>
@github-actions
Copy link

Benchmark for 16e97a5

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 349.6±17.74ns 357.9±17.41ns -2.32%
Arithmetic operations (Full) 246.0±12.78µs 245.8±10.19µs +0.08%
Array access (Execution) 8.2±0.44µs 8.0±0.40µs +2.50%
Array access (Full) 266.7±12.67µs 264.2±12.43µs +0.95%
Array creation (Execution) 2.6±0.11ms 2.6±0.12ms 0.00%
Array creation (Full) 3.0±0.11ms 3.0±0.14ms 0.00%
Array pop (Execution) 946.9±34.53µs 957.2±39.97µs -1.08%
Array pop (Full) 1451.8±75.79µs 1475.3±62.93µs -1.59%
Boolean Object Access (Execution) 4.6±0.24µs 4.3±0.23µs +6.98%
Boolean Object Access (Full) 259.3±12.36µs 254.3±11.24µs +1.97%
Clean js (Execution) 688.1±30.04µs 667.7±38.65µs +3.06%
Clean js (Full) 988.8±43.45µs 1042.8±45.25µs -5.18%
Clean js (Parser) 39.9±2.78µs 40.7±2.17µs -1.97%
Create Realm 453.5±23.94ns 451.3±21.60ns +0.49%
Dynamic Object Property Access (Execution) 5.8±0.30µs 5.9±0.31µs -1.69%
Dynamic Object Property Access (Full) 273.4±15.19µs 269.5±12.95µs +1.45%
Expression (Parser) 6.7±0.37µs 6.7±0.39µs 0.00%
Fibonacci (Execution) 868.6±38.97µs 893.3±40.40µs -2.77%
Fibonacci (Full) 1142.3±48.75µs 1144.0±55.49µs -0.15%
For loop (Execution) 22.5±1.06µs 23.6±1.18µs -4.66%
For loop (Full) 294.5±16.23µs 294.8±14.37µs -0.10%
For loop (Parser) 18.6±1.02µs 18.9±0.95µs -1.59%
Goal Symbols (Parser) 12.4±0.79µs 12.4±0.59µs 0.00%
Hello World (Parser) 3.1±0.16µs 3.1±0.17µs 0.00%
Long file (Parser) 771.8±32.75ns 799.3±42.08ns -3.44%
Mini js (Execution) 628.7±29.17µs 603.8±26.43µs +4.12%
Mini js (Full) 908.5±36.67µs 888.1±39.50µs +2.30%
Mini js (Parser) 33.6±2.30µs 35.6±1.69µs -5.62%
Number Object Access (Execution) 3.6±0.17µs 3.5±0.20µs +2.86%
Number Object Access (Full) 254.1±11.24µs 258.9±13.97µs -1.85%
Object Creation (Execution) 5.0±0.28µs 5.0±0.24µs 0.00%
Object Creation (Full) 264.6±12.31µs 254.4±14.49µs +4.01%
RegExp (Execution) 9.5±0.48µs 9.8±0.48µs -3.06%
RegExp (Full) 269.0±11.63µs 261.3±11.68µs +2.95%
RegExp Literal (Execution) 10.4±0.51µs 10.4±0.54µs 0.00%
RegExp Literal (Full) 277.7±18.77µs 265.2±14.62µs +4.71%
RegExp Literal Creation (Execution) 9.2±0.52µs 9.5±0.43µs -3.16%
RegExp Literal Creation (Full) 265.2±14.50µs 258.8±15.25µs +2.47%
Static Object Property Access (Execution) 5.2±0.33µs 5.2±0.27µs 0.00%
Static Object Property Access (Full) 269.6±14.04µs 258.5±17.77µs +4.29%
String Object Access (Execution) 7.0±0.38µs 6.8±0.31µs +2.94%
String Object Access (Full) 263.4±13.68µs 257.5±12.80µs +2.29%
String comparison (Execution) 6.5±0.46µs 6.4±0.34µs +1.56%
String comparison (Full) 263.2±12.26µs 272.3±8.48µs -3.34%
String concatenation (Execution) 5.4±0.46µs 5.4±0.22µs 0.00%
String concatenation (Full) 256.6±13.37µs 255.4±12.55µs +0.47%
String copy (Execution) 4.2±0.22µs 4.1±0.18µs +2.44%
String copy (Full) 252.6±14.50µs 246.2±11.36µs +2.60%
Symbols (Execution) 3.5±0.15µs 3.5±0.23µs 0.00%
Symbols (Full) 236.2±9.72µs 229.2±9.23µs +3.05%

@github-actions
Copy link

Benchmark for 819a314

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 320.1±12.69ns 333.3±15.69ns -3.96%
Arithmetic operations (Full) 207.9±8.38µs 201.0±8.39µs +3.43%
Array access (Execution) 7.4±0.26µs 7.4±0.18µs 0.00%
Array access (Full) 222.4±8.50µs 235.3±5.78µs -5.48%
Array creation (Execution) 2.6±0.07ms 2.8±0.05ms -7.14%
Array creation (Full) 2.8±0.14ms 3.0±0.11ms -6.67%
Array pop (Execution) 948.4±27.50µs 993.9±27.93µs -4.58%
Array pop (Full) 1298.2±57.41µs 1409.3±60.80µs -7.88%
Boolean Object Access (Execution) 4.2±0.19µs 4.4±0.09µs -4.55%
Boolean Object Access (Full) 219.3±10.86µs 213.0±8.90µs +2.96%
Clean js (Execution) 617.8±26.48µs 649.7±21.04µs -4.91%
Clean js (Full) 900.5±47.19µs 891.9±33.78µs +0.96%
Clean js (Parser) 35.7±0.78µs 32.3±1.61µs +10.53%
Create Realm 426.9±15.23ns 430.0±22.67ns -0.72%
Dynamic Object Property Access (Execution) 5.1±0.24µs 5.2±0.15µs -1.92%
Dynamic Object Property Access (Full) 222.3±11.34µs 227.5±10.50µs -2.29%
Expression (Parser) 6.4±0.26µs 6.3±0.29µs +1.59%
Fibonacci (Execution) 765.0±29.44µs 767.4±26.31µs -0.31%
Fibonacci (Full) 998.5±44.27µs 985.7±27.84µs +1.30%
For loop (Execution) 20.4±0.76µs 21.4±0.43µs -4.67%
For loop (Full) 240.4±9.78µs 248.9±9.30µs -3.42%
For loop (Parser) 17.0±0.56µs 15.8±0.60µs +7.59%
Goal Symbols (Parser) 12.0±0.26µs 10.9±0.51µs +10.09%
Hello World (Parser) 3.0±0.06µs 2.7±0.12µs +11.11%
Long file (Parser) 719.4±20.73ns 678.1±25.36ns +6.09%
Mini js (Execution) 562.5±29.62µs 582.7±21.94µs -3.47%
Mini js (Full) 842.9±19.98µs 795.3±31.22µs +5.99%
Mini js (Parser) 30.8±0.87µs 28.6±1.57µs +7.69%
Number Object Access (Execution) 3.3±0.14µs 3.4±0.13µs -2.94%
Number Object Access (Full) 212.4±8.68µs 208.0±10.77µs +2.12%
Object Creation (Execution) 4.4±0.14µs 4.4±0.14µs 0.00%
Object Creation (Full) 214.7±10.78µs 230.5±5.83µs -6.85%
RegExp (Execution) 8.8±0.27µs 9.3±0.28µs -5.38%
RegExp (Full) 219.9±8.41µs 230.9±8.38µs -4.76%
RegExp Literal (Execution) 9.6±0.47µs 9.9±0.41µs -3.03%
RegExp Literal (Full) 227.4±9.23µs 238.3±7.35µs -4.57%
RegExp Literal Creation (Execution) 8.8±0.29µs 9.1±0.26µs -3.30%
RegExp Literal Creation (Full) 221.8±10.99µs 220.6±10.45µs +0.54%
Static Object Property Access (Execution) 4.5±0.15µs 4.7±0.11µs -4.26%
Static Object Property Access (Full) 226.5±9.42µs 226.7±9.05µs -0.09%
String Object Access (Execution) 6.3±0.26µs 6.4±0.22µs -1.56%
String Object Access (Full) 226.4±6.41µs 216.8±8.77µs +4.43%
String comparison (Execution) 5.6±0.29µs 6.1±0.17µs -8.20%
String comparison (Full) 218.7±10.07µs 223.1±9.92µs -1.97%
String concatenation (Execution) 4.7±0.19µs 4.8±0.11µs -2.08%
String concatenation (Full) 214.3±9.28µs 229.3±9.34µs -6.54%
String copy (Execution) 3.6±0.16µs 3.7±0.16µs -2.70%
String copy (Full) 207.9±10.59µs 207.8±9.10µs +0.05%
Symbols (Execution) 3.1±0.10µs 3.3±0.08µs -6.06%
Symbols (Full) 199.8±9.68µs 213.5±5.06µs -6.42%

@github-actions
Copy link

Benchmark for b2beea1

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 378.4±11.73ns 367.1±6.76ns +3.08%
Arithmetic operations (Full) 235.9±5.69µs 233.7±2.49µs +0.94%
Array access (Execution) 8.0±0.30µs 8.1±0.72µs -1.23%
Array access (Full) 255.9±7.50µs 257.9±3.80µs -0.78%
Array creation (Execution) 2.8±0.06ms 2.9±0.04ms -3.45%
Array creation (Full) 3.1±0.05ms 3.3±0.06ms -6.06%
Array pop (Execution) 1041.9±25.34µs 1050.8±22.51µs -0.85%
Array pop (Full) 1506.7±35.83µs 1555.3±21.88µs -3.12%
Boolean Object Access (Execution) 4.7±0.09µs 4.7±0.14µs 0.00%
Boolean Object Access (Full) 249.4±10.78µs 251.4±11.52µs -0.80%
Clean js (Execution) 708.9±10.17µs 713.4±15.79µs -0.63%
Clean js (Full) 1010.9±17.54µs 1019.1±14.27µs -0.80%
Clean js (Parser) 37.7±0.79µs 37.4±1.51µs +0.80%
Create Realm 489.9±15.46ns 477.4±15.45ns +2.62%
Dynamic Object Property Access (Execution) 5.7±0.12µs 5.6±0.11µs +1.79%
Dynamic Object Property Access (Full) 251.8±6.90µs 249.9±7.55µs +0.76%
Expression (Parser) 7.0±0.14µs 7.0±0.66µs 0.00%
Fibonacci (Execution) 840.1±24.52µs 848.3±21.40µs -0.97%
Fibonacci (Full) 1123.3±42.81µs 1099.8±32.32µs +2.14%
For loop (Execution) 22.9±1.35µs 23.3±0.62µs -1.72%
For loop (Full) 277.0±4.08µs 271.9±4.30µs +1.88%
For loop (Parser) 18.4±0.28µs 18.2±0.35µs +1.10%
Goal Symbols (Parser) 12.8±0.22µs 12.6±0.35µs +1.59%
Hello World (Parser) 3.2±0.10µs 3.1±0.05µs +3.23%
Long file (Parser) 763.1±21.99ns 768.1±16.88ns -0.65%
Mini js (Execution) 644.9±38.66µs 635.9±19.44µs +1.42%
Mini js (Full) 912.1±14.65µs 919.0±18.43µs -0.75%
Mini js (Parser) 32.6±0.58µs 32.4±0.64µs +0.62%
Number Object Access (Execution) 3.8±0.23µs 3.8±0.10µs 0.00%
Number Object Access (Full) 242.8±2.88µs 243.0±4.73µs -0.08%
Object Creation (Execution) 4.8±0.08µs 4.8±0.43µs 0.00%
Object Creation (Full) 246.4±5.95µs 251.9±9.81µs -2.18%
RegExp (Execution) 9.6±0.14µs 9.6±0.29µs 0.00%
RegExp (Full) 252.1±5.07µs 254.5±9.90µs -0.94%
RegExp Literal (Execution) 10.9±0.25µs 10.7±0.24µs +1.87%
RegExp Literal (Full) 259.0±6.72µs 257.6±7.44µs +0.54%
RegExp Literal Creation (Execution) 9.7±0.21µs 9.7±0.21µs 0.00%
RegExp Literal Creation (Full) 250.1±6.26µs 249.5±3.54µs +0.24%
Static Object Property Access (Execution) 5.0±0.14µs 5.0±0.17µs 0.00%
Static Object Property Access (Full) 250.7±16.43µs 248.2±4.77µs +1.01%
String Object Access (Execution) 7.1±0.26µs 7.0±0.11µs +1.43%
String Object Access (Full) 253.0±7.24µs 252.7±5.29µs +0.12%
String comparison (Execution) 6.6±0.33µs 6.5±0.22µs +1.54%
String comparison (Full) 251.9±4.74µs 251.7±4.02µs +0.08%
String concatenation (Execution) 5.3±0.09µs 5.3±0.11µs 0.00%
String concatenation (Full) 247.7±7.04µs 247.3±8.79µs +0.16%
String copy (Execution) 4.1±0.06µs 4.0±0.07µs +2.50%
String copy (Full) 241.7±5.89µs 245.4±8.17µs -1.51%
Symbols (Execution) 3.5±0.07µs 3.5±0.08µs 0.00%
Symbols (Full) 226.7±4.93µs 226.3±3.21µs +0.18%

@github-actions
Copy link

Benchmark for 0616ddc

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 371.7±16.91ns 377.1±25.54ns -1.43%
Arithmetic operations (Full) 249.2±15.08µs 269.8±20.64µs -7.64%
Array access (Execution) 8.6±0.66µs 8.7±0.57µs -1.15%
Array access (Full) 275.1±18.49µs 280.0±15.31µs -1.75%
Array creation (Execution) 2.8±0.15ms 2.7±0.13ms +3.70%
Array creation (Full) 3.1±0.26ms 3.1±0.21ms 0.00%
Array pop (Execution) 1047.1±68.91µs 1030.3±73.81µs +1.63%
Array pop (Full) 1512.0±116.06µs 1579.8±162.93µs -4.29%
Boolean Object Access (Execution) 4.9±0.43µs 4.9±0.43µs 0.00%
Boolean Object Access (Full) 270.1±15.52µs 258.0±15.67µs +4.69%
Clean js (Execution) 739.5±72.79µs 746.1±66.74µs -0.88%
Clean js (Full) 1027.2±81.91µs 1089.4±90.53µs -5.71%
Clean js (Parser) 39.9±1.77µs 40.8±2.66µs -2.21%
Create Realm 542.1±36.57ns 494.3±39.80ns +9.67%
Dynamic Object Property Access (Execution) 6.1±0.31µs 6.2±0.39µs -1.61%
Dynamic Object Property Access (Full) 277.1±15.94µs 278.5±13.90µs -0.50%
Expression (Parser) 7.4±0.44µs 7.1±0.43µs +4.23%
Fibonacci (Execution) 919.8±63.35µs 948.0±58.73µs -2.97%
Fibonacci (Full) 1202.5±78.93µs 1218.4±84.95µs -1.30%
For loop (Execution) 24.4±1.62µs 24.2±1.63µs +0.83%
For loop (Full) 304.7±19.60µs 296.2±17.40µs +2.87%
For loop (Parser) 19.7±1.10µs 19.6±1.78µs +0.51%
Goal Symbols (Parser) 13.4±0.87µs 13.2±0.91µs +1.52%
Hello World (Parser) 3.4±0.32µs 3.5±0.27µs -2.86%
Long file (Parser) 824.8±38.21ns 839.1±69.28ns -1.70%
Mini js (Execution) 674.2±52.40µs 668.6±50.83µs +0.84%
Mini js (Full) 965.3±69.40µs 961.4±67.34µs +0.41%
Mini js (Parser) 34.8±1.78µs 35.4±3.10µs -1.69%
Number Object Access (Execution) 3.8±0.26µs 3.9±0.29µs -2.56%
Number Object Access (Full) 262.7±23.58µs 284.1±23.85µs -7.53%
Object Creation (Execution) 5.4±0.45µs 5.4±0.32µs 0.00%
Object Creation (Full) 264.5±15.18µs 275.0±17.44µs -3.82%
RegExp (Execution) 10.0±0.72µs 10.0±0.64µs 0.00%
RegExp (Full) 278.9±18.66µs 284.6±70.39µs -2.00%
RegExp Literal (Execution) 11.3±0.79µs 11.4±0.68µs -0.88%
RegExp Literal (Full) 278.6±17.72µs 269.9±24.25µs +3.22%
RegExp Literal Creation (Execution) 9.8±0.53µs 9.9±0.82µs -1.01%
RegExp Literal Creation (Full) 278.1±23.50µs 264.3±11.52µs +5.22%
Static Object Property Access (Execution) 5.5±0.31µs 5.5±0.36µs 0.00%
Static Object Property Access (Full) 267.2±19.93µs 274.2±19.78µs -2.55%
String Object Access (Execution) 7.4±0.41µs 7.3±0.54µs +1.37%
String Object Access (Full) 276.7±15.76µs 269.5±23.11µs +2.67%
String comparison (Execution) 6.7±0.43µs 7.2±2.05µs -6.94%
String comparison (Full) 275.4±18.22µs 269.1±18.47µs +2.34%
String concatenation (Execution) 5.5±0.40µs 5.7±0.30µs -3.51%
String concatenation (Full) 260.5±18.06µs 270.8±18.43µs -3.80%
String copy (Execution) 4.3±0.27µs 4.4±0.41µs -2.27%
String copy (Full) 262.5±28.51µs 253.7±14.94µs +3.47%
Symbols (Execution) 3.7±0.22µs 3.7±0.22µs 0.00%
Symbols (Full) 252.0±20.83µs 241.4±16.78µs +4.39%

@github-actions
Copy link

Benchmark for 1ca177e

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 366.0±1.37ns 363.7±0.51ns +0.63%
Arithmetic operations (Full) 232.7±0.66µs 232.2±0.83µs +0.22%
Array access (Execution) 7.9±0.03µs 7.7±0.02µs +2.60%
Array access (Full) 252.9±0.69µs 253.8±0.79µs -0.35%
Array creation (Execution) 2.8±0.00ms 2.8±0.00ms 0.00%
Array creation (Full) 3.1±0.01ms 3.3±0.00ms -6.06%
Array pop (Execution) 1032.9±4.31µs 1032.4±4.08µs +0.05%
Array pop (Full) 1480.0±7.31µs 1536.1±2.15µs -3.65%
Boolean Object Access (Execution) 4.6±0.01µs 4.7±0.01µs -2.13%
Boolean Object Access (Full) 246.0±0.69µs 242.7±1.02µs +1.36%
Clean js (Execution) 696.3±4.00µs 694.4±3.72µs +0.27%
Clean js (Full) 999.6±9.53µs 1004.5±5.31µs -0.49%
Clean js (Parser) 37.0±0.08µs 36.8±0.06µs +0.54%
Create Realm 479.5±0.80ns 466.7±4.59ns +2.74%
Dynamic Object Property Access (Execution) 5.6±0.01µs 5.5±0.01µs +1.82%
Dynamic Object Property Access (Full) 245.0±0.46µs 246.6±0.61µs -0.65%
Expression (Parser) 6.9±0.01µs 6.8±0.03µs +1.47%
Fibonacci (Execution) 820.1±2.59µs 810.4±2.72µs +1.20%
Fibonacci (Full) 1091.3±4.47µs 1071.4±1.99µs +1.86%
For loop (Execution) 22.5±0.06µs 22.3±0.06µs +0.90%
For loop (Full) 267.9±0.81µs 267.2±0.38µs +0.26%
For loop (Parser) 18.1±0.15µs 17.8±0.07µs +1.69%
Goal Symbols (Parser) 12.6±0.01µs 12.4±0.03µs +1.61%
Hello World (Parser) 3.1±0.01µs 3.1±0.00µs 0.00%
Long file (Parser) 771.5±1.01ns 776.5±2.03ns -0.64%
Mini js (Execution) 627.1±4.17µs 625.8±8.06µs +0.21%
Mini js (Full) 897.1±3.22µs 909.1±6.12µs -1.32%
Mini js (Parser) 32.3±0.06µs 32.1±0.09µs +0.62%
Number Object Access (Execution) 3.7±0.01µs 3.6±0.02µs +2.78%
Number Object Access (Full) 239.2±0.89µs 242.7±0.44µs -1.44%
Object Creation (Execution) 4.8±0.01µs 4.7±0.02µs +2.13%
Object Creation (Full) 241.3±0.45µs 244.2±0.74µs -1.19%
RegExp (Execution) 9.5±0.03µs 9.4±0.03µs +1.06%
RegExp (Full) 247.5±0.80µs 247.0±0.89µs +0.20%
RegExp Literal (Execution) 10.6±0.03µs 10.5±0.02µs +0.95%
RegExp Literal (Full) 250.7±0.83µs 251.0±0.68µs -0.12%
RegExp Literal Creation (Execution) 9.5±0.03µs 9.4±0.04µs +1.06%
RegExp Literal Creation (Full) 244.5±2.04µs 245.5±1.02µs -0.41%
Static Object Property Access (Execution) 5.0±0.01µs 4.9±0.01µs +2.04%
Static Object Property Access (Full) 242.5±0.66µs 245.3±0.91µs -1.14%
String Object Access (Execution) 7.0±0.02µs 7.0±0.10µs 0.00%
String Object Access (Full) 245.9±0.44µs 247.8±0.58µs -0.77%
String comparison (Execution) 6.4±0.04µs 6.5±0.04µs -1.54%
String comparison (Full) 246.6±0.82µs 249.5±0.78µs -1.16%
String concatenation (Execution) 5.2±0.02µs 5.2±0.03µs 0.00%
String concatenation (Full) 240.0±0.75µs 242.6±0.68µs -1.07%
String copy (Execution) 4.0±0.01µs 4.0±0.02µs 0.00%
String copy (Full) 234.4±0.44µs 237.2±0.57µs -1.18%
Symbols (Execution) 3.4±0.01µs 3.4±0.01µs 0.00%
Symbols (Full) 225.7±0.41µs 223.2±0.36µs +1.12%

@HalidOdat HalidOdat added enhancement New feature or request parser Issues surrounding the parser labels Oct 11, 2020
@HalidOdat HalidOdat added this to the v0.11.0 milestone Oct 11, 2020
Copy link
Member

@Razican Razican left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finally got a bit of time to review this code. It's looking very, very good. Check my comments and let's see if it can be improved!

Paul Lancaster and others added 2 commits October 11, 2020 20:14
…sion/mod.rs

Co-authored-by: Iban Eguia <razican@protonmail.ch>
…nction_decl/mod.rs

Co-authored-by: Iban Eguia <razican@protonmail.ch>
@github-actions
Copy link

Benchmark for eaf55fc

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 361.3±3.51ns 360.4±3.00ns +0.25%
Arithmetic operations (Full) 229.4±1.89µs 226.1±2.70µs +1.46%
Array access (Execution) 7.9±0.02µs 7.8±0.06µs +1.28%
Array access (Full) 266.2±17.83µs 250.3±2.14µs +6.35%
Array creation (Execution) 2.8±0.08ms 2.9±0.10ms -3.45%
Array creation (Full) 3.0±0.01ms 3.2±0.04ms -6.25%
Array pop (Execution) 1033.4±4.28µs 1028.0±8.74µs +0.53%
Array pop (Full) 1469.6±13.81µs 1510.7±16.60µs -2.72%
Boolean Object Access (Execution) 4.6±0.03µs 4.5±0.04µs +2.22%
Boolean Object Access (Full) 238.9±2.57µs 237.5±3.42µs +0.59%
Clean js (Execution) 690.1±5.88µs 703.7±31.33µs -1.93%
Clean js (Full) 992.1±8.17µs 992.6±12.34µs -0.05%
Clean js (Parser) 36.9±0.08µs 36.2±0.40µs +1.93%
Create Realm 467.9±9.67ns 459.4±6.10ns +1.85%
Dynamic Object Property Access (Execution) 5.6±0.06µs 5.6±0.04µs 0.00%
Dynamic Object Property Access (Full) 242.2±3.08µs 246.6±0.34µs -1.78%
Expression (Parser) 6.8±0.06µs 6.9±0.07µs -1.45%
Fibonacci (Execution) 803.7±6.55µs 808.9±7.25µs -0.64%
Fibonacci (Full) 1093.2±3.74µs 1093.4±33.16µs -0.02%
For loop (Execution) 22.4±0.19µs 22.4±0.15µs 0.00%
For loop (Full) 263.9±2.61µs 271.8±9.84µs -2.91%
For loop (Parser) 18.0±0.18µs 17.7±0.17µs +1.69%
Goal Symbols (Parser) 12.4±0.18µs 12.1±0.14µs +2.48%
Hello World (Parser) 3.1±0.04µs 3.0±0.03µs +3.33%
Long file (Parser) 762.5±7.61ns 754.6±8.70ns +1.05%
Mini js (Execution) 646.0±28.77µs 643.4±24.37µs +0.40%
Mini js (Full) 941.8±66.23µs 932.5±49.02µs +1.00%
Mini js (Parser) 32.1±0.18µs 31.7±0.21µs +1.26%
Number Object Access (Execution) 3.7±0.02µs 3.6±0.02µs +2.78%
Number Object Access (Full) 238.1±1.42µs 237.4±1.40µs +0.29%
Object Creation (Execution) 4.7±0.04µs 4.7±0.05µs 0.00%
Object Creation (Full) 238.1±2.41µs 238.4±2.11µs -0.13%
RegExp (Execution) 9.1±0.15µs 9.3±0.06µs -2.15%
RegExp (Full) 247.2±1.06µs 244.2±2.15µs +1.23%
RegExp Literal (Execution) 10.3±0.08µs 10.4±0.08µs -0.96%
RegExp Literal (Full) 249.8±1.45µs 249.6±2.40µs +0.08%
RegExp Literal Creation (Execution) 9.5±0.48µs 9.3±0.05µs +2.15%
RegExp Literal Creation (Full) 246.8±1.75µs 243.3±0.50µs +1.44%
Static Object Property Access (Execution) 4.9±0.05µs 4.9±0.04µs 0.00%
Static Object Property Access (Full) 241.1±1.05µs 253.7±11.84µs -4.97%
String Object Access (Execution) 6.9±0.37µs 6.9±0.05µs 0.00%
String Object Access (Full) 261.4±18.33µs 244.3±2.16µs +7.00%
String comparison (Execution) 6.4±0.06µs 6.5±0.06µs -1.54%
String comparison (Full) 242.9±1.75µs 240.7±2.53µs +0.91%
String concatenation (Execution) 5.2±0.05µs 5.2±0.04µs 0.00%
String concatenation (Full) 236.1±2.33µs 237.3±3.23µs -0.51%
String copy (Execution) 4.0±0.05µs 4.0±0.05µs 0.00%
String copy (Full) 231.5±2.15µs 230.5±2.63µs +0.43%
Symbols (Execution) 3.4±0.02µs 3.5±0.02µs -2.86%
Symbols (Full) 223.3±1.48µs 228.3±10.16µs -2.19%

@github-actions
Copy link

Benchmark for eaf55fc

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 375.4±23.95ns 378.3±21.73ns -0.77%
Arithmetic operations (Full) 249.1±10.39µs 256.2±16.19µs -2.77%
Array access (Execution) 8.5±0.45µs 8.3±0.46µs +2.41%
Array access (Full) 284.0±14.91µs 282.0±14.78µs +0.71%
Array creation (Execution) 2.9±0.12ms 2.6±0.12ms +11.54%
Array creation (Full) 3.0±0.19ms 3.2±0.12ms -6.25%
Array pop (Execution) 1070.1±160.69µs 973.1±53.63µs +9.97%
Array pop (Full) 1440.2±60.17µs 1544.5±72.91µs -6.75%
Boolean Object Access (Execution) 5.1±0.18µs 4.9±0.25µs +4.08%
Boolean Object Access (Full) 262.0±15.23µs 282.8±15.45µs -7.36%
Clean js (Execution) 729.9±37.73µs 714.5±40.06µs +2.16%
Clean js (Full) 1022.0±47.34µs 1063.5±49.86µs -3.90%
Clean js (Parser) 37.7±2.05µs 39.5±2.32µs -4.56%
Create Realm 484.7±23.20ns 491.4±24.45ns -1.36%
Dynamic Object Property Access (Execution) 6.1±0.25µs 6.4±0.38µs -4.69%
Dynamic Object Property Access (Full) 282.1±25.69µs 281.7±15.14µs +0.14%
Expression (Parser) 6.8±0.43µs 7.0±0.27µs -2.86%
Fibonacci (Execution) 947.3±40.76µs 928.8±39.40µs +1.99%
Fibonacci (Full) 1199.9±59.75µs 1211.8±103.92µs -0.98%
For loop (Execution) 24.2±1.26µs 24.1±1.62µs +0.41%
For loop (Full) 296.3±17.08µs 304.4±12.63µs -2.66%
For loop (Parser) 18.2±0.96µs 18.9±0.85µs -3.70%
Goal Symbols (Parser) 12.7±0.68µs 13.0±0.55µs -2.31%
Hello World (Parser) 3.1±0.17µs 3.3±0.14µs -6.06%
Long file (Parser) 814.4±43.36ns 814.9±40.36ns -0.06%
Mini js (Execution) 666.3±27.44µs 653.0±25.91µs +2.04%
Mini js (Full) 901.0±39.40µs 975.3±84.52µs -7.62%
Mini js (Parser) 32.8±1.79µs 34.3±2.47µs -4.37%
Number Object Access (Execution) 3.8±0.16µs 4.0±0.22µs -5.00%
Number Object Access (Full) 265.5±12.52µs 275.2±11.43µs -3.52%
Object Creation (Execution) 5.1±0.30µs 5.2±0.35µs -1.92%
Object Creation (Full) 278.8±13.82µs 275.4±15.84µs +1.23%
RegExp (Execution) 10.0±0.49µs 9.9±0.48µs +1.01%
RegExp (Full) 274.7±15.52µs 280.1±11.71µs -1.93%
RegExp Literal (Execution) 11.0±0.62µs 10.9±0.59µs +0.92%
RegExp Literal (Full) 273.1±10.65µs 285.0±12.60µs -4.18%
RegExp Literal Creation (Execution) 9.8±0.48µs 9.8±0.47µs 0.00%
RegExp Literal Creation (Full) 270.0±9.86µs 286.6±14.12µs -5.79%
Static Object Property Access (Execution) 5.5±0.35µs 5.6±0.44µs -1.79%
Static Object Property Access (Full) 274.4±12.45µs 278.8±19.14µs -1.58%
String Object Access (Execution) 7.5±0.41µs 7.5±0.42µs 0.00%
String Object Access (Full) 265.2±16.69µs 276.1±11.88µs -3.95%
String comparison (Execution) 7.1±0.28µs 7.0±0.40µs +1.43%
String comparison (Full) 271.3±12.47µs 277.1±11.60µs -2.09%
String concatenation (Execution) 5.6±0.30µs 5.5±0.32µs +1.82%
String concatenation (Full) 257.2±12.80µs 268.4±12.66µs -4.17%
String copy (Execution) 4.8±0.28µs 4.5±0.44µs +6.67%
String copy (Full) 262.1±10.18µs 261.0±10.90µs +0.42%
Symbols (Execution) 3.6±0.17µs 3.6±0.25µs 0.00%
Symbols (Full) 246.0±11.35µs 244.5±10.90µs +0.61%

@github-actions
Copy link

Benchmark for 0a49725

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 348.9±12.75ns 331.0±16.89ns +5.41%
Arithmetic operations (Full) 223.9±9.28µs 230.8±17.55µs -2.99%
Array access (Execution) 7.9±0.35µs 8.2±0.56µs -3.66%
Array access (Full) 239.6±7.62µs 242.2±9.53µs -1.07%
Array creation (Execution) 2.7±0.13ms 2.6±0.07ms +3.85%
Array creation (Full) 2.7±0.10ms 2.8±0.09ms -3.57%
Array pop (Execution) 941.4±47.04µs 979.0±43.81µs -3.84%
Array pop (Full) 1364.1±55.57µs 1345.0±34.09µs +1.42%
Boolean Object Access (Execution) 4.6±0.23µs 4.5±0.20µs +2.22%
Boolean Object Access (Full) 252.1±8.99µs 239.1±11.58µs +5.44%
Clean js (Execution) 718.8±28.28µs 645.5±28.14µs +11.36%
Clean js (Full) 981.1±37.65µs 955.0±51.91µs +2.73%
Clean js (Parser) 39.2±1.33µs 35.5±1.90µs +10.42%
Create Realm 459.8±13.80ns 452.5±21.85ns +1.61%
Dynamic Object Property Access (Execution) 5.4±0.31µs 5.5±0.35µs -1.82%
Dynamic Object Property Access (Full) 239.2±11.43µs 254.7±16.91µs -6.09%
Expression (Parser) 7.1±0.16µs 6.8±0.36µs +4.41%
Fibonacci (Execution) 826.1±27.15µs 840.1±39.23µs -1.67%
Fibonacci (Full) 1046.2±33.12µs 1111.7±53.92µs -5.89%
For loop (Execution) 22.2±1.36µs 22.6±0.81µs -1.77%
For loop (Full) 269.9±12.08µs 272.2±32.36µs -0.84%
For loop (Parser) 19.4±1.03µs 17.5±0.95µs +10.86%
Goal Symbols (Parser) 12.5±0.45µs 11.6±0.44µs +7.76%
Hello World (Parser) 3.3±0.11µs 3.1±0.13µs +6.45%
Long file (Parser) 820.2±31.63ns 781.0±86.03ns +5.02%
Mini js (Execution) 633.0±29.19µs 582.6±38.29µs +8.65%
Mini js (Full) 894.6±21.86µs 841.8±29.11µs +6.27%
Mini js (Parser) 34.4±3.06µs 32.6±1.61µs +5.52%
Number Object Access (Execution) 3.7±0.16µs 3.5±0.21µs +5.71%
Number Object Access (Full) 239.2±14.47µs 245.6±8.86µs -2.61%
Object Creation (Execution) 4.6±0.16µs 4.8±0.31µs -4.17%
Object Creation (Full) 254.8±9.49µs 231.1±9.13µs +10.26%
RegExp (Execution) 8.9±0.25µs 8.9±0.33µs 0.00%
RegExp (Full) 256.4±11.14µs 259.2±12.20µs -1.08%
RegExp Literal (Execution) 10.3±0.54µs 10.4±0.58µs -0.96%
RegExp Literal (Full) 260.5±9.82µs 257.4±13.13µs +1.20%
RegExp Literal Creation (Execution) 8.9±0.33µs 9.1±0.48µs -2.20%
RegExp Literal Creation (Full) 252.0±14.91µs 243.8±11.87µs +3.36%
Static Object Property Access (Execution) 4.8±0.17µs 4.8±0.22µs 0.00%
Static Object Property Access (Full) 235.4±8.26µs 236.3±8.75µs -0.38%
String Object Access (Execution) 7.1±0.60µs 6.8±0.34µs +4.41%
String Object Access (Full) 238.6±9.50µs 240.0±11.69µs -0.58%
String comparison (Execution) 6.9±0.33µs 6.1±0.23µs +13.11%
String comparison (Full) 250.8±12.35µs 256.0±11.51µs -2.03%
String concatenation (Execution) 5.3±0.33µs 4.9±0.18µs +8.16%
String concatenation (Full) 251.5±9.64µs 249.5±8.89µs +0.80%
String copy (Execution) 4.1±0.19µs 3.9±0.15µs +5.13%
String copy (Full) 229.1±12.92µs 245.1±10.41µs -6.53%
Symbols (Execution) 3.4±0.14µs 3.5±0.18µs -2.86%
Symbols (Full) 226.6±11.34µs 220.3±13.30µs +2.86%

@github-actions
Copy link

Benchmark for 0a49725

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 346.8±18.50ns 346.6±18.38ns +0.06%
Arithmetic operations (Full) 241.1±12.01µs 243.0±13.45µs -0.78%
Array access (Execution) 8.0±0.44µs 8.0±0.41µs 0.00%
Array access (Full) 261.0±17.05µs 267.9±12.78µs -2.58%
Array creation (Execution) 2.7±0.11ms 2.7±0.09ms 0.00%
Array creation (Full) 2.9±0.11ms 3.0±0.15ms -3.33%
Array pop (Execution) 995.9±46.40µs 951.6±48.44µs +4.66%
Array pop (Full) 1433.2±58.82µs 1498.5±64.58µs -4.36%
Boolean Object Access (Execution) 4.6±0.25µs 4.7±0.29µs -2.13%
Boolean Object Access (Full) 258.5±13.45µs 252.0±14.30µs +2.58%
Clean js (Execution) 715.3±46.86µs 697.3±28.39µs +2.58%
Clean js (Full) 995.4±44.52µs 1022.1±50.25µs -2.61%
Clean js (Parser) 38.6±2.49µs 38.8±2.82µs -0.52%
Create Realm 456.3±15.97ns 456.1±24.66ns +0.04%
Dynamic Object Property Access (Execution) 5.9±0.26µs 5.9±0.24µs 0.00%
Dynamic Object Property Access (Full) 262.9±13.89µs 264.5±16.13µs -0.60%
Expression (Parser) 7.1±0.38µs 6.7±0.37µs +5.97%
Fibonacci (Execution) 873.6±55.10µs 871.1±34.97µs +0.29%
Fibonacci (Full) 1156.8±61.65µs 1158.7±63.72µs -0.16%
For loop (Execution) 22.8±1.23µs 22.9±1.29µs -0.44%
For loop (Full) 302.4±18.90µs 293.8±13.21µs +2.93%
For loop (Parser) 18.6±1.08µs 18.4±1.27µs +1.09%
Goal Symbols (Parser) 13.0±0.56µs 12.7±0.56µs +2.36%
Hello World (Parser) 3.1±0.16µs 3.2±0.15µs -3.13%
Long file (Parser) 800.0±38.71ns 820.8±35.88ns -2.53%
Mini js (Execution) 615.4±32.69µs 617.9±37.82µs -0.40%
Mini js (Full) 919.3±37.12µs 905.3±48.93µs +1.55%
Mini js (Parser) 33.5±1.78µs 32.5±1.32µs +3.08%
Number Object Access (Execution) 3.6±0.29µs 3.6±0.20µs 0.00%
Number Object Access (Full) 253.2±16.63µs 255.7±16.72µs -0.98%
Object Creation (Execution) 4.9±0.34µs 4.9±0.21µs 0.00%
Object Creation (Full) 258.2±15.04µs 260.2±18.24µs -0.77%
RegExp (Execution) 9.6±0.50µs 9.5±0.39µs +1.05%
RegExp (Full) 259.9±12.18µs 264.7±15.74µs -1.81%
RegExp Literal (Execution) 10.9±0.68µs 11.2±0.44µs -2.68%
RegExp Literal (Full) 276.6±29.34µs 263.9±14.36µs +4.81%
RegExp Literal Creation (Execution) 9.5±0.58µs 9.6±0.46µs -1.04%
RegExp Literal Creation (Full) 266.0±18.61µs 262.7±19.27µs +1.26%
Static Object Property Access (Execution) 5.1±0.47µs 5.2±0.25µs -1.92%
Static Object Property Access (Full) 257.3±12.03µs 257.9±12.18µs -0.23%
String Object Access (Execution) 7.1±0.38µs 7.3±0.31µs -2.74%
String Object Access (Full) 267.1±14.27µs 256.0±20.98µs +4.34%
String comparison (Execution) 6.5±0.34µs 6.5±0.32µs 0.00%
String comparison (Full) 265.2±14.61µs 270.2±25.61µs -1.85%
String concatenation (Execution) 5.4±0.23µs 5.4±0.34µs 0.00%
String concatenation (Full) 254.2±14.49µs 265.3±12.16µs -4.18%
String copy (Execution) 4.2±0.25µs 4.1±0.20µs +2.44%
String copy (Full) 258.3±11.19µs 258.5±8.87µs -0.08%
Symbols (Execution) 3.4±0.15µs 3.6±0.18µs -5.56%
Symbols (Full) 232.0±11.65µs 237.9±15.30µs -2.48%

@github-actions
Copy link

Benchmark for 243ee72

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 364.2±4.70ns 360.2±3.47ns +1.11%
Arithmetic operations (Full) 241.4±10.20µs 229.0±2.79µs +5.41%
Array access (Execution) 7.8±0.08µs 7.8±0.02µs 0.00%
Array access (Full) 252.0±1.16µs 247.1±2.57µs +1.98%
Array creation (Execution) 2.9±0.12ms 2.8±0.02ms +3.57%
Array creation (Full) 3.2±0.15ms 3.2±0.03ms 0.00%
Array pop (Execution) 1053.1±47.30µs 1028.6±8.78µs +2.38%
Array pop (Full) 1478.4±6.52µs 1518.0±12.73µs -2.61%
Boolean Object Access (Execution) 4.7±0.04µs 4.6±0.04µs +2.17%
Boolean Object Access (Full) 242.0±2.06µs 239.4±2.18µs +1.09%
Clean js (Execution) 691.4±7.52µs 695.0±6.04µs -0.52%
Clean js (Full) 997.3±8.53µs 995.1±10.50µs +0.22%
Clean js (Parser) 37.1±0.25µs 36.8±0.21µs +0.82%
Create Realm 468.0±4.80ns 461.7±4.43ns +1.36%
Dynamic Object Property Access (Execution) 5.5±0.04µs 5.5±0.04µs 0.00%
Dynamic Object Property Access (Full) 246.2±1.46µs 242.7±2.28µs +1.44%
Expression (Parser) 6.8±0.01µs 7.2±0.47µs -5.56%
Fibonacci (Execution) 818.0±6.26µs 832.5±44.88µs -1.74%
Fibonacci (Full) 1083.4±7.63µs 1129.5±56.33µs -4.08%
For loop (Execution) 22.5±0.59µs 22.5±0.15µs 0.00%
For loop (Full) 264.1±3.82µs 276.5±22.78µs -4.48%
For loop (Parser) 18.2±0.10µs 17.7±0.13µs +2.82%
Goal Symbols (Parser) 12.5±0.09µs 12.4±0.16µs +0.81%
Hello World (Parser) 3.2±0.03µs 3.1±0.03µs +3.23%
Long file (Parser) 759.2±2.27ns 755.2±8.30ns +0.53%
Mini js (Execution) 624.3±5.32µs 627.5±4.25µs -0.51%
Mini js (Full) 928.7±36.30µs 900.7±12.35µs +3.11%
Mini js (Parser) 34.8±3.46µs 31.8±0.38µs +9.43%
Number Object Access (Execution) 3.7±0.02µs 3.7±0.16µs 0.00%
Number Object Access (Full) 241.4±0.51µs 239.8±1.77µs +0.67%
Object Creation (Execution) 4.7±0.03µs 4.7±0.05µs 0.00%
Object Creation (Full) 255.8±15.58µs 239.4±1.39µs +6.85%
RegExp (Execution) 9.5±0.16µs 9.2±0.04µs +3.26%
RegExp (Full) 249.4±0.61µs 245.2±2.44µs +1.71%
RegExp Literal (Execution) 10.5±0.09µs 10.3±0.07µs +1.94%
RegExp Literal (Full) 250.2±5.78µs 250.9±2.32µs -0.28%
RegExp Literal Creation (Execution) 9.5±0.08µs 9.2±0.06µs +3.26%
RegExp Literal Creation (Full) 245.5±1.67µs 243.1±2.38µs +0.99%
Static Object Property Access (Execution) 5.1±0.37µs 4.9±0.03µs +4.08%
Static Object Property Access (Full) 243.4±1.39µs 240.5±1.74µs +1.21%
String Object Access (Execution) 7.0±0.25µs 6.9±0.05µs +1.45%
String Object Access (Full) 256.6±12.12µs 255.7±12.44µs +0.35%
String comparison (Execution) 6.5±0.05µs 6.4±0.05µs +1.56%
String comparison (Full) 244.7±1.43µs 246.1±1.95µs -0.57%
String concatenation (Execution) 5.1±0.05µs 5.2±0.06µs -1.92%
String concatenation (Full) 238.8±0.53µs 240.7±1.23µs -0.79%
String copy (Execution) 4.0±0.02µs 4.0±0.03µs 0.00%
String copy (Full) 235.6±0.84µs 235.8±10.39µs -0.08%
Symbols (Execution) 3.4±0.03µs 3.4±0.04µs 0.00%
Symbols (Full) 222.1±1.52µs 229.7±8.11µs -3.31%

@github-actions
Copy link

Benchmark for 1a12e2f

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 336.5±14.01ns 343.2±6.58ns -1.95%
Arithmetic operations (Full) 212.7±7.60µs 219.9±4.65µs -3.27%
Array access (Execution) 7.3±0.21µs 7.4±0.23µs -1.35%
Array access (Full) 236.1±6.56µs 232.9±8.07µs +1.37%
Array creation (Execution) 2.8±0.09ms 2.6±0.06ms +7.69%
Array creation (Full) 3.0±0.08ms 2.9±0.10ms +3.45%
Array pop (Execution) 1033.2±22.82µs 962.0±28.36µs +7.40%
Array pop (Full) 1436.9±43.89µs 1392.7±35.46µs +3.17%
Boolean Object Access (Execution) 4.4±0.11µs 4.4±0.10µs 0.00%
Boolean Object Access (Full) 231.1±8.36µs 229.7±9.96µs +0.61%
Clean js (Execution) 650.9±25.53µs 655.7±20.63µs -0.73%
Clean js (Full) 935.6±25.90µs 936.2±23.97µs -0.06%
Clean js (Parser) 34.2±1.44µs 35.1±0.89µs -2.56%
Create Realm 442.4±13.88ns 428.7±19.45ns +3.20%
Dynamic Object Property Access (Execution) 5.2±0.16µs 5.3±0.13µs -1.89%
Dynamic Object Property Access (Full) 227.2±7.35µs 234.8±6.33µs -3.24%
Expression (Parser) 6.5±0.20µs 6.6±0.14µs -1.52%
Fibonacci (Execution) 766.0±22.82µs 772.4±25.21µs -0.83%
Fibonacci (Full) 1016.2±36.46µs 1018.7±27.56µs -0.25%
For loop (Execution) 21.1±0.39µs 21.3±0.46µs -0.94%
For loop (Full) 250.4±6.90µs 256.9±6.23µs -2.53%
For loop (Parser) 17.0±0.41µs 16.8±0.66µs +1.19%
Goal Symbols (Parser) 11.7±0.38µs 11.7±0.40µs 0.00%
Hello World (Parser) 2.9±0.07µs 3.0±0.11µs -3.33%
Long file (Parser) 715.4±15.86ns 737.3±16.79ns -2.97%
Mini js (Execution) 593.3±21.06µs 591.8±16.99µs +0.25%
Mini js (Full) 835.3±25.03µs 839.7±26.72µs -0.52%
Mini js (Parser) 29.8±0.95µs 30.4±0.88µs -1.97%
Number Object Access (Execution) 3.5±0.07µs 3.4±0.14µs +2.94%
Number Object Access (Full) 224.9±7.87µs 228.8±6.48µs -1.70%
Object Creation (Execution) 4.6±0.12µs 4.4±0.17µs +4.55%
Object Creation (Full) 223.1±8.21µs 229.8±6.03µs -2.92%
RegExp (Execution) 9.0±0.35µs 9.0±0.30µs 0.00%
RegExp (Full) 231.3±7.29µs 235.4±7.57µs -1.74%
RegExp Literal (Execution) 10.0±0.27µs 10.0±0.26µs 0.00%
RegExp Literal (Full) 236.5±7.09µs 236.3±8.34µs +0.08%
RegExp Literal Creation (Execution) 9.0±0.33µs 9.1±0.30µs -1.10%
RegExp Literal Creation (Full) 230.2±7.02µs 232.3±7.90µs -0.90%
Static Object Property Access (Execution) 4.6±0.13µs 4.7±0.13µs -2.13%
Static Object Property Access (Full) 228.7±7.15µs 233.2±6.68µs -1.93%
String Object Access (Execution) 6.6±0.17µs 6.6±0.17µs 0.00%
String Object Access (Full) 234.2±7.38µs 232.7±7.55µs +0.64%
String comparison (Execution) 6.0±0.20µs 6.0±0.16µs 0.00%
String comparison (Full) 229.7±7.03µs 233.5±4.60µs -1.63%
String concatenation (Execution) 5.0±0.12µs 4.9±0.17µs +2.04%
String concatenation (Full) 227.1±6.18µs 228.4±5.07µs -0.57%
String copy (Execution) 3.8±0.14µs 3.8±0.12µs 0.00%
String copy (Full) 218.6±8.42µs 222.9±8.44µs -1.93%
Symbols (Execution) 3.3±0.11µs 3.3±0.09µs 0.00%
Symbols (Full) 207.5±5.97µs 215.5±5.12µs -3.71%

@github-actions
Copy link

Benchmark for 3aae7e8

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 376.1±22.15ns 362.8±24.13ns +3.67%
Arithmetic operations (Full) 245.9±15.82µs 246.3±15.65µs -0.16%
Array access (Execution) 8.7±0.63µs 8.4±0.61µs +3.57%
Array access (Full) 275.1±15.71µs 289.6±25.28µs -5.01%
Array creation (Execution) 2.9±0.19ms 2.7±0.18ms +7.41%
Array creation (Full) 3.1±0.19ms 3.2±0.24ms -3.13%
Array pop (Execution) 1098.9±64.71µs 1024.5±84.77µs +7.26%
Array pop (Full) 1526.1±92.64µs 1517.2±97.66µs +0.59%
Boolean Object Access (Execution) 5.1±0.42µs 5.2±1.20µs -1.92%
Boolean Object Access (Full) 270.6±19.77µs 271.4±18.50µs -0.29%
Clean js (Execution) 778.2±53.78µs 709.2±48.80µs +9.73%
Clean js (Full) 1030.8±71.06µs 1041.0±75.48µs -0.98%
Clean js (Parser) 40.4±3.62µs 40.3±2.90µs +0.25%
Create Realm 531.3±53.91ns 515.4±30.49ns +3.08%
Dynamic Object Property Access (Execution) 6.5±0.68µs 6.1±0.43µs +6.56%
Dynamic Object Property Access (Full) 279.5±16.50µs 275.0±14.84µs +1.64%
Expression (Parser) 7.3±0.49µs 7.5±0.50µs -2.67%
Fibonacci (Execution) 928.9±57.65µs 925.9±55.74µs +0.32%
Fibonacci (Full) 1247.9±92.64µs 1158.9±64.38µs +7.68%
For loop (Execution) 25.0±1.58µs 24.1±1.71µs +3.73%
For loop (Full) 313.5±40.02µs 300.3±20.28µs +4.40%
For loop (Parser) 19.0±1.30µs 20.0±1.48µs -5.00%
Goal Symbols (Parser) 12.8±0.74µs 13.1±0.99µs -2.29%
Hello World (Parser) 3.4±0.26µs 3.3±0.21µs +3.03%
Long file (Parser) 842.2±58.41ns 842.7±66.48ns -0.06%
Mini js (Execution) 686.4±44.77µs 639.8±38.53µs +7.28%
Mini js (Full) 929.9±58.96µs 932.4±59.04µs -0.27%
Mini js (Parser) 34.2±1.91µs 35.0±2.23µs -2.29%
Number Object Access (Execution) 4.1±0.29µs 3.8±0.25µs +7.89%
Number Object Access (Full) 264.1±16.03µs 269.3±20.14µs -1.93%
Object Creation (Execution) 5.2±0.28µs 5.1±0.32µs +1.96%
Object Creation (Full) 284.9±30.18µs 273.8±21.74µs +4.05%
RegExp (Execution) 10.9±1.61µs 9.9±0.75µs +10.10%
RegExp (Full) 280.2±23.86µs 272.8±15.82µs +2.71%
RegExp Literal (Execution) 11.7±0.98µs 10.8±0.78µs +8.33%
RegExp Literal (Full) 295.6±21.87µs 291.4±22.47µs +1.44%
RegExp Literal Creation (Execution) 10.7±0.79µs 9.8±0.74µs +9.18%
RegExp Literal Creation (Full) 273.7±16.96µs 281.4±22.91µs -2.74%
Static Object Property Access (Execution) 5.4±0.32µs 5.4±0.39µs 0.00%
Static Object Property Access (Full) 277.4±17.89µs 278.8±22.20µs -0.50%
String Object Access (Execution) 7.5±0.57µs 7.5±0.58µs 0.00%
String Object Access (Full) 281.3±20.83µs 283.1±23.59µs -0.64%
String comparison (Execution) 7.0±0.48µs 6.8±0.50µs +2.94%
String comparison (Full) 270.7±18.03µs 274.9±18.62µs -1.53%
String concatenation (Execution) 6.0±0.51µs 5.5±0.36µs +9.09%
String concatenation (Full) 284.5±17.30µs 274.8±21.61µs +3.53%
String copy (Execution) 4.6±0.26µs 4.6±1.19µs 0.00%
String copy (Full) 261.2±21.58µs 264.0±16.82µs -1.06%
Symbols (Execution) 4.0±0.33µs 3.6±0.26µs +11.11%
Symbols (Full) 257.2±20.87µs 248.3±18.00µs +3.58%

@Lan2u Lan2u merged commit 586a689 into master Oct 13, 2020
@Lan2u Lan2u deleted the async_parse branch October 13, 2020 17:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request parser Issues surrounding the parser
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants