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

Index PropertyKey, Object iterators and symbol support #603

Merged
merged 2 commits into from
Aug 19, 2020

Conversation

HalidOdat
Copy link
Member

@HalidOdat HalidOdat commented Aug 5, 2020

It changes the following:

  • Added iter method to object to iterate over all (indexed, string and symbol) keys (PropertyKey) and value (Property)
  • Added keys method to object to iterate over all (indexed, string and symbol) keys (PropertyKey)
  • Added values method to object to iterate through all the (indexed, string and symbol) values (Property).
  • Added symbol_properties method to object to iterate over symbol keys (RcSymbol) and value (Property)
  • Added symbol_property_keys method to object to iterate over symbol keys (RcSymbol)
  • Added symbol_property_values method to object to iterate over symbol values (Property)
  • Added index_properties method to object to iterate over index keys (u32) and value (Property)
  • Added index_property_keys method to object to iterate over index keys (u32)
  • Added index_property_values method to object to iterate over index values (Property)
  • Added string_properties method to object to iterate over string keys (RcString) and value (Property)
  • Added string_property_keys method to object to iterate over string keys (RcString)
  • Added string_property_values method to object to iterate over string values (Property)
  • Removed properties, properties_mut, symbol_properties and symbol_properties_mut.
  • Added Symbol indexing support.
  • Added .construct_symbol() for creating symbols
  • Added .construct_object() for creating object with the prototype set.
  • Added PropertyKey::Index(u32) This is done for a couple of reasons:
    • To store indexed indexes (u32 size numbers) as u32 and not as RcStrings (memory optimization)
    • To not convert back and forth from index to index string
    • To make index comparisons fast (compare two u32 instead of RcStrings)
    • when we are getting an index for example array we don't have to do .get_field(i.to_string()) instead we should do .get_field(i)
  • Added indexed_properties Hash map with key u32 this is because an array index is from 0 to 2^32 - 1 (u32::MAX).
    • This is done for a some reasons:
      • We can make this a IndexMap and when we need to iterate through all the elements (in order) we can do so without iteration through 0 to length (this is what caused the test runner to freeze in Add ECMAScript test suite (test262) #567 with indexOf with sparse elements). should make iteration very fast.
      • we can easily iterate through all the elements without converting to RcString.
  • Made Object symbol_properties contain key RcSymbol instead of just hash:
    • If we want do display the symbol we need to have the symbol.
    • If we want to get the Symbol description we need the symbol:
      • Example Symbol.toPrimitive.description

@HalidOdat HalidOdat added enhancement New feature or request memory PRs and Issues related to the memory management or memory footprint. performance Performance related changes and issues labels Aug 5, 2020
@codecov
Copy link

codecov bot commented Aug 5, 2020

Codecov Report

Merging #603 into master will decrease coverage by 0.42%.
The diff coverage is 57.33%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #603      +/-   ##
==========================================
- Coverage   72.91%   72.49%   -0.43%     
==========================================
  Files         178      179       +1     
  Lines       13226    13367     +141     
==========================================
+ Hits         9644     9690      +46     
- Misses       3582     3677      +95     
Impacted Files Coverage Δ
boa/src/environment/global_environment_record.rs 27.95% <0.00%> (ø)
boa/src/exec/call/mod.rs 71.42% <0.00%> (-2.65%) ⬇️
boa/src/exec/tests.rs 100.00% <ø> (ø)
boa/src/builtins/object/iter.rs 14.14% <14.14%> (ø)
boa/src/exec/mod.rs 70.12% <25.00%> (-0.95%) ⬇️
boa/src/builtins/object/mod.rs 39.17% <33.33%> (-0.56%) ⬇️
boa/src/builtins/value/conversions.rs 55.73% <50.00%> (+3.43%) ⬆️
boa/src/builtins/property/mod.rs 50.00% <55.31%> (+8.25%) ⬆️
boa/src/builtins/object/internal_methods.rs 37.65% <73.33%> (+8.13%) ⬆️
boa/src/builtins/array/mod.rs 76.44% <77.55%> (-2.83%) ⬇️
... and 16 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 c9afbf4...77ec719. Read the comment docs.

@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for cd40d51

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 304.9±20.29ns 315.9±22.98ns -3.48%
Arithmetic operations (Full) 146.6±11.17µs 132.2±8.29µs +10.89%
Array access (Execution) 7.1±0.49µs 6.8±0.39µs +4.41%
Array access (Full) 168.7±17.35µs 143.2±9.55µs +17.81%
Array creation (Execution) 2.8±0.12ms 2.7±0.14ms +3.70%
Array creation (Full) 3.1±0.18ms 2.9±0.15ms +6.90%
Array pop (Execution) 995.4±67.30µs 1000.2±88.27µs -0.48%
Array pop (Full) 1297.0±77.30µs 1192.8±83.37µs +8.74%
Boolean Object Access (Execution) 4.7±0.27µs 3.4±0.19µs +38.24%
Boolean Object Access (Full) 151.7±9.16µs 146.9±15.66µs +3.27%
Create Realm 371.9±20.20ns 352.3±26.51ns +5.56%
Dynamic Object Property Access (Execution) 4.6±0.38µs 4.0±0.25µs +15.00%
Dynamic Object Property Access (Full) 151.3±8.95µs 141.7±9.65µs +6.77%
Expression (Lexer) 1912.8±143.56ns 1977.3±116.59ns -3.26%
Expression (Parser) 4.3±0.30µs 4.2±0.27µs +2.38%
Fibonacci (Execution) 697.8±44.82µs 712.2±43.38µs -2.02%
Fibonacci (Full) 852.0±62.58µs 877.2±53.01µs -2.87%
For loop (Execution) 18.1±1.23µs 17.6±1.18µs +2.84%
For loop (Full) 167.2±10.87µs 151.7±9.32µs +10.22%
For loop (Lexer) 4.2±0.25µs 4.3±0.24µs -2.33%
For loop (Parser) 11.5±0.81µs 11.3±0.77µs +1.77%
Goal Symbols (Parser) 6.8±0.48µs 6.8±0.44µs 0.00%
Hello World (Lexer) 674.0±71.22ns 650.0±36.89ns +3.69%
Hello World (Parser) 1714.3±96.13ns 1693.9±90.94ns +1.20%
Long file (Parser) 5.1±0.22ms 5.2±0.21ms -1.92%
Number Object Access (Execution) 3.7±0.28µs 2.6±0.15µs +42.31%
Number Object Access (Full) 155.9±21.45µs 137.3±8.16µs +13.55%
Object Creation (Execution) 4.0±0.27µs 3.4±0.19µs +17.65%
Object Creation (Full) 168.4±10.63µs 153.8±11.40µs +9.49%
RegExp (Execution) 53.4±3.44µs 51.5±3.38µs +3.69%
RegExp (Full) 236.1±15.79µs 225.0±16.38µs +4.93%
RegExp Literal (Execution) 56.4±4.37µs 54.5±3.11µs +3.49%
RegExp Literal (Full) 210.3±13.82µs 199.3±11.76µs +5.52%
RegExp Literal Creation (Execution) 53.8±3.51µs 51.5±3.04µs +4.47%
RegExp Literal Creation (Full) 234.5±14.10µs 221.3±18.02µs +5.96%
Static Object Property Access (Execution) 4.1±0.24µs 3.6±0.24µs +13.89%
Static Object Property Access (Full) 152.3±8.91µs 136.4±9.89µs +11.66%
String Object Access (Execution) 6.5±0.49µs 5.3±0.31µs +22.64%
String Object Access (Full) 153.4±9.73µs 140.9±8.42µs +8.87%
String comparison (Execution) 5.4±0.35µs 4.8±0.31µs +12.50%
String comparison (Full) 153.5±8.94µs 141.7±12.11µs +8.33%
String concatenation (Execution) 4.4±0.33µs 3.8±0.23µs +15.79%
String concatenation (Full) 157.9±12.70µs 142.7±9.21µs +10.65%
String copy (Execution) 3.2±0.22µs 2.9±0.22µs +10.34%
String copy (Full) 145.9±10.02µs 135.7±10.78µs +7.52%
Symbols (Execution) 2.7±0.14µs 2.3±0.16µs +17.39%
Symbols (Full) 141.7±7.57µs 128.6±7.86µs +10.19%

@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for b133ed9

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 320.0±33.81ns 321.0±23.39ns -0.31%
Arithmetic operations (Full) 171.2±16.40µs 158.3±15.56µs +8.15%
Array access (Execution) 7.8±0.66µs 7.6±0.82µs +2.63%
Array access (Full) 186.7±13.40µs 170.9±13.32µs +9.25%
Array creation (Execution) 2.8±0.18ms 2.9±0.21ms -3.45%
Array creation (Full) 3.2±0.28ms 3.0±0.21ms +6.67%
Array pop (Execution) 1059.7±161.50µs 1035.8±87.27µs +2.31%
Array pop (Full) 1337.8±107.80µs 1266.5±98.93µs +5.63%
Boolean Object Access (Execution) 5.2±0.33µs 3.9±0.35µs +33.33%
Boolean Object Access (Full) 182.5±12.73µs 165.5±13.06µs +10.27%
Create Realm 388.4±26.81ns 377.5±34.39ns +2.89%
Dynamic Object Property Access (Execution) 5.4±0.49µs 4.5±0.31µs +20.00%
Dynamic Object Property Access (Full) 175.4±13.81µs 166.7±12.05µs +5.22%
Expression (Lexer) 2.2±0.19µs 2.2±0.21µs 0.00%
Expression (Parser) 4.9±0.36µs 4.6±0.37µs +6.52%
Fibonacci (Execution) 823.7±56.79µs 837.8±65.80µs -1.68%
Fibonacci (Full) 994.8±72.26µs 1017.2±76.61µs -2.20%
For loop (Execution) 19.9±1.77µs 19.7±1.42µs +1.02%
For loop (Full) 201.5±15.67µs 180.0±11.93µs +11.94%
For loop (Lexer) 4.7±0.61µs 4.6±0.40µs +2.17%
For loop (Parser) 12.9±0.85µs 12.9±1.16µs 0.00%
Goal Symbols (Parser) 7.5±0.57µs 7.5±0.58µs 0.00%
Hello World (Lexer) 725.8±59.64ns 748.1±54.30ns -2.98%
Hello World (Parser) 1966.2±142.13ns 1871.1±143.35ns +5.08%
Long file (Parser) 5.8±0.34ms 5.7±0.36ms +1.75%
Number Object Access (Execution) 4.1±0.35µs 3.1±0.23µs +32.26%
Number Object Access (Full) 178.5±13.59µs 165.5±14.24µs +7.85%
Object Creation (Execution) 4.5±0.34µs 3.9±0.27µs +15.38%
Object Creation (Full) 197.9±16.19µs 182.3±13.73µs +8.56%
RegExp (Execution) 61.8±4.98µs 63.4±7.05µs -2.52%
RegExp (Full) 282.7±21.66µs 259.6±18.84µs +8.90%
RegExp Literal (Execution) 68.0±5.51µs 66.3±5.81µs +2.56%
RegExp Literal (Full) 260.4±17.22µs 242.3±15.75µs +7.47%
RegExp Literal Creation (Execution) 63.3±5.04µs 62.1±5.44µs +1.93%
RegExp Literal Creation (Full) 277.4±30.83µs 262.0±16.72µs +5.88%
Static Object Property Access (Execution) 4.8±0.49µs 4.1±0.31µs +17.07%
Static Object Property Access (Full) 173.9±11.44µs 171.6±14.29µs +1.34%
String Object Access (Execution) 7.2±0.62µs 5.8±0.48µs +24.14%
String Object Access (Full) 182.4±17.08µs 164.4±12.57µs +10.95%
String comparison (Execution) 6.0±0.45µs 5.9±0.49µs +1.69%
String comparison (Full) 180.5±14.55µs 162.8±11.38µs +10.87%
String concatenation (Execution) 4.9±0.37µs 5.0±0.55µs -2.00%
String concatenation (Full) 176.2±11.72µs 162.4±12.38µs +8.50%
String copy (Execution) 3.9±0.35µs 3.3±0.27µs +18.18%
String copy (Full) 172.8±14.10µs 156.6±10.51µs +10.34%
Symbols (Execution) 3.1±0.24µs 2.6±0.20µs +19.23%
Symbols (Full) 171.9±20.66µs 157.4±15.39µs +9.21%

@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for 2db92d8

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 397.0±23.31ns 402.7±32.09ns -1.42%
Arithmetic operations (Full) 196.9±11.48µs 181.8±11.89µs +8.31%
Array access (Execution) 9.0±0.58µs 8.9±0.48µs +1.12%
Array access (Full) 217.4±15.51µs 202.1±13.99µs +7.57%
Array creation (Execution) 3.5±0.20ms 3.3±0.15ms +6.06%
Array creation (Full) 3.6±0.17ms 3.5±0.15ms +2.86%
Array pop (Execution) 1242.9±77.39µs 1174.6±66.51µs +5.81%
Array pop (Full) 1530.1±87.55µs 1452.9±51.93µs +5.31%
Boolean Object Access (Execution) 5.5±0.31µs 4.5±0.23µs +22.22%
Boolean Object Access (Full) 215.5±17.38µs 195.7±13.09µs +10.12%
Create Realm 482.3±27.16ns 459.9±37.17ns +4.87%
Dynamic Object Property Access (Execution) 5.8±0.33µs 5.3±0.28µs +9.43%
Dynamic Object Property Access (Full) 204.4±10.86µs 201.9±24.92µs +1.24%
Expression (Lexer) 2.6±0.17µs 2.6±0.11µs 0.00%
Expression (Parser) 5.5±0.41µs 5.6±0.51µs -1.79%
Fibonacci (Execution) 948.5±39.90µs 994.2±54.14µs -4.60%
Fibonacci (Full) 1159.5±66.83µs 1217.8±85.15µs -4.79%
For loop (Execution) 23.9±1.34µs 23.4±1.74µs +2.14%
For loop (Full) 235.3±10.95µs 207.4±13.65µs +13.45%
For loop (Lexer) 5.5±0.31µs 5.8±0.33µs -5.17%
For loop (Parser) 15.0±0.93µs 15.7±1.15µs -4.46%
Goal Symbols (Parser) 9.0±0.61µs 9.1±0.65µs -1.10%
Hello World (Lexer) 896.5±60.54ns 901.4±48.51ns -0.54%
Hello World (Parser) 2.3±0.18µs 2.2±0.14µs +4.55%
Long file (Parser) 6.8±0.28ms 6.8±0.28ms 0.00%
Number Object Access (Execution) 4.3±0.26µs 3.6±0.24µs +19.44%
Number Object Access (Full) 202.5±8.35µs 187.2±10.54µs +8.17%
Object Creation (Execution) 4.9±0.28µs 4.6±0.37µs +6.52%
Object Creation (Full) 237.9±9.87µs 213.3±11.72µs +11.53%
RegExp (Execution) 73.5±4.18µs 74.1±4.97µs -0.81%
RegExp (Full) 322.6±16.02µs 309.1±16.99µs +4.37%
RegExp Literal (Execution) 79.1±5.67µs 77.1±4.53µs +2.59%
RegExp Literal (Full) 301.1±20.38µs 280.9±20.57µs +7.19%
RegExp Literal Creation (Execution) 75.1±5.14µs 72.7±4.12µs +3.30%
RegExp Literal Creation (Full) 320.1±15.98µs 311.0±20.45µs +2.93%
Static Object Property Access (Execution) 5.2±0.32µs 4.7±0.33µs +10.64%
Static Object Property Access (Full) 201.1±8.87µs 196.0±63.70µs +2.60%
String Object Access (Execution) 7.7±0.41µs 6.7±0.30µs +14.93%
String Object Access (Full) 210.9±14.82µs 192.3±10.11µs +9.67%
String comparison (Execution) 7.1±0.44µs 6.7±0.30µs +5.97%
String comparison (Full) 214.8±11.25µs 194.6±12.30µs +10.38%
String concatenation (Execution) 5.6±0.34µs 5.4±0.34µs +3.70%
String concatenation (Full) 202.0±10.49µs 188.6±10.84µs +7.10%
String copy (Execution) 4.3±0.57µs 4.1±0.29µs +4.88%
String copy (Full) 204.1±18.46µs 185.7±11.08µs +9.91%
Symbols (Execution) 3.5±0.21µs 3.0±0.18µs +16.67%
Symbols (Full) 193.9±11.05µs 179.0±10.96µs +8.32%

@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for f81486d

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 400.8±29.18ns 388.3±30.47ns +3.22%
Arithmetic operations (Full) 192.1±12.06µs 181.7±11.52µs +5.72%
Array access (Execution) 9.1±0.92µs 9.0±0.81µs +1.11%
Array access (Full) 214.0±13.36µs 200.4±11.14µs +6.79%
Array creation (Execution) 3.4±0.21ms 3.4±0.19ms 0.00%
Array creation (Full) 3.7±0.13ms 3.6±0.13ms +2.78%
Array pop (Execution) 1260.3±132.03µs 1224.0±155.13µs +2.97%
Array pop (Full) 1541.4±70.40µs 1516.2±122.07µs +1.66%
Boolean Object Access (Execution) 5.4±0.30µs 4.6±0.27µs +17.39%
Boolean Object Access (Full) 202.0±10.66µs 189.9±7.60µs +6.37%
Create Realm 468.8±27.84ns 498.3±32.49ns -5.92%
Dynamic Object Property Access (Execution) 5.9±0.40µs 5.3±0.32µs +11.32%
Dynamic Object Property Access (Full) 201.9±10.01µs 201.1±29.59µs +0.40%
Expression (Lexer) 2.7±0.21µs 2.6±0.13µs +3.85%
Expression (Parser) 5.5±0.33µs 5.4±0.24µs +1.85%
Fibonacci (Execution) 951.4±47.89µs 976.0±67.67µs -2.52%
Fibonacci (Full) 1170.7±148.46µs 1205.7±66.45µs -2.90%
For loop (Execution) 23.6±1.39µs 23.3±1.36µs +1.29%
For loop (Full) 216.2±10.77µs 219.3±19.37µs -1.41%
For loop (Lexer) 5.6±0.53µs 5.6±0.31µs 0.00%
For loop (Parser) 15.0±0.94µs 14.9±1.05µs +0.67%
Goal Symbols (Parser) 9.5±1.70µs 9.0±0.69µs +5.56%
Hello World (Lexer) 869.7±50.29ns 886.0±49.34ns -1.84%
Hello World (Parser) 2.3±0.18µs 2.3±0.15µs 0.00%
Long file (Parser) 7.0±0.32ms 6.9±0.64ms +1.45%
Number Object Access (Execution) 4.2±0.22µs 3.7±0.31µs +13.51%
Number Object Access (Full) 202.7±17.43µs 190.0±11.85µs +6.68%
Object Creation (Execution) 5.2±0.87µs 4.6±0.42µs +13.04%
Object Creation (Full) 227.1±13.06µs 216.2±13.86µs +5.04%
RegExp (Execution) 75.8±6.75µs 73.7±5.28µs +2.85%
RegExp (Full) 325.9±26.22µs 315.3±17.51µs +3.36%
RegExp Literal (Execution) 78.7±5.83µs 78.7±5.63µs 0.00%
RegExp Literal (Full) 295.8±17.36µs 278.0±14.17µs +6.40%
RegExp Literal Creation (Execution) 76.6±6.42µs 72.8±5.52µs +5.22%
RegExp Literal Creation (Full) 324.8±22.23µs 316.0±21.29µs +2.78%
Static Object Property Access (Execution) 5.5±0.52µs 4.7±0.29µs +17.02%
Static Object Property Access (Full) 202.9±17.07µs 193.5±12.49µs +4.86%
String Object Access (Execution) 8.0±0.68µs 7.0±0.38µs +14.29%
String Object Access (Full) 203.5±10.90µs 198.7±13.45µs +2.42%
String comparison (Execution) 6.9±0.49µs 6.7±0.38µs +2.99%
String comparison (Full) 205.7±14.26µs 193.6±10.10µs +6.25%
String concatenation (Execution) 5.5±0.34µs 5.5±0.60µs 0.00%
String concatenation (Full) 202.1±17.24µs 188.8±10.25µs +7.04%
String copy (Execution) 4.1±0.28µs 4.1±0.22µs 0.00%
String copy (Full) 202.0±26.05µs 186.0±16.28µs +8.60%
Symbols (Execution) 3.4±0.27µs 3.1±0.28µs +9.68%
Symbols (Full) 188.3±12.78µs 179.9±18.72µs +4.67%

@HalidOdat HalidOdat changed the title Index PropertyKey Index PropertyKey and Object iterators Aug 5, 2020
@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for 6f191f3

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 387.8±24.51ns 389.2±21.27ns -0.36%
Arithmetic operations (Full) 189.7±9.39µs 183.8±10.00µs +3.21%
Array access (Execution) 9.0±0.69µs 9.1±0.68µs -1.10%
Array access (Full) 216.7±13.83µs 202.4±17.61µs +7.07%
Array creation (Execution) 3.4±0.19ms 3.3±0.22ms +3.03%
Array creation (Full) 3.7±0.17ms 3.6±0.20ms +2.78%
Array pop (Execution) 1182.6±61.06µs 1169.0±58.22µs +1.16%
Array pop (Full) 1577.1±101.17µs 1531.0±104.45µs +3.01%
Boolean Object Access (Execution) 5.5±0.40µs 4.8±0.39µs +14.58%
Boolean Object Access (Full) 205.9±17.49µs 196.2±10.83µs +4.94%
Create Realm 495.3±40.14ns 459.5±25.59ns +7.79%
Dynamic Object Property Access (Execution) 5.8±0.41µs 5.4±0.44µs +7.41%
Dynamic Object Property Access (Full) 206.4±11.27µs 201.5±13.50µs +2.43%
Expression (Lexer) 2.7±0.28µs 2.6±0.13µs +3.85%
Expression (Parser) 5.6±0.47µs 5.4±0.25µs +3.70%
Fibonacci (Execution) 948.2±52.18µs 969.4±39.43µs -2.19%
Fibonacci (Full) 1186.2±98.75µs 1213.0±88.73µs -2.21%
For loop (Execution) 25.0±2.68µs 23.0±1.00µs +8.70%
For loop (Full) 230.3±16.32µs 211.1±17.56µs +9.10%
For loop (Lexer) 5.6±0.38µs 5.7±0.41µs -1.75%
For loop (Parser) 15.3±1.21µs 15.3±1.74µs 0.00%
Goal Symbols (Parser) 9.2±0.93µs 8.9±0.52µs +3.37%
Hello World (Lexer) 871.0±45.29ns 896.5±50.19ns -2.84%
Hello World (Parser) 2.3±0.09µs 2.2±0.10µs +4.55%
Long file (Parser) 6.9±0.40ms 7.0±0.32ms -1.43%
Number Object Access (Execution) 4.3±0.29µs 3.7±0.36µs +16.22%
Number Object Access (Full) 207.6±13.55µs 188.6±12.65µs +10.07%
Object Creation (Execution) 4.9±0.27µs 4.5±0.24µs +8.89%
Object Creation (Full) 235.5±15.69µs 229.0±18.10µs +2.84%
RegExp (Execution) 78.4±8.46µs 75.3±5.97µs +4.12%
RegExp (Full) 325.2±22.48µs 318.6±22.67µs +2.07%
RegExp Literal (Execution) 78.6±5.06µs 78.1±6.24µs +0.64%
RegExp Literal (Full) 301.4±31.43µs 281.1±19.30µs +7.22%
RegExp Literal Creation (Execution) 75.3±5.00µs 75.6±5.12µs -0.40%
RegExp Literal Creation (Full) 343.0±20.97µs 328.1±40.32µs +4.54%
Static Object Property Access (Execution) 5.3±0.33µs 4.7±0.23µs +12.77%
Static Object Property Access (Full) 205.4±13.63µs 194.9±12.50µs +5.39%
String Object Access (Execution) 7.6±0.44µs 6.8±0.40µs +11.76%
String Object Access (Full) 204.1±11.40µs 200.8±13.89µs +1.64%
String comparison (Execution) 7.8±0.66µs 7.0±0.44µs +11.43%
String comparison (Full) 204.2±11.66µs 202.4±14.59µs +0.89%
String concatenation (Execution) 5.9±0.30µs 5.4±0.35µs +9.26%
String concatenation (Full) 201.4±11.99µs 194.6±14.80µs +3.49%
String copy (Execution) 4.4±0.24µs 4.1±0.20µs +7.32%
String copy (Full) 192.8±9.93µs 186.4±11.59µs +3.43%
Symbols (Execution) 3.4±0.22µs 3.0±0.19µs +13.33%
Symbols (Full) 184.4±8.83µs 179.0±12.45µs +3.02%

@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for 8b5a0a6

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 397.0±16.98ns 382.0±15.94ns +3.93%
Arithmetic operations (Full) 197.5±6.33µs 177.0±5.68µs +11.58%
Array access (Execution) 9.0±0.34µs 9.1±0.68µs -1.10%
Array access (Full) 218.6±6.73µs 197.4±10.92µs +10.74%
Array creation (Execution) 3.4±0.09ms 3.4±0.08ms 0.00%
Array creation (Full) 3.7±0.09ms 3.6±0.10ms +2.78%
Array pop (Execution) 1207.4±38.04µs 1235.5±67.71µs -2.27%
Array pop (Full) 1547.1±89.26µs 1479.6±37.13µs +4.56%
Boolean Object Access (Execution) 5.4±0.20µs 4.5±0.20µs +20.00%
Boolean Object Access (Full) 203.8±9.31µs 196.0±6.05µs +3.98%
Create Realm 468.3±13.98ns 451.5±28.14ns +3.72%
Dynamic Object Property Access (Execution) 6.0±0.73µs 5.4±0.16µs +11.11%
Dynamic Object Property Access (Full) 207.3±7.87µs 197.7±8.42µs +4.86%
Expression (Lexer) 2.6±0.07µs 2.5±0.07µs +4.00%
Expression (Parser) 5.5±0.18µs 5.4±0.31µs +1.85%
Fibonacci (Execution) 966.7±25.32µs 1003.4±30.94µs -3.66%
Fibonacci (Full) 1169.1±37.87µs 1197.5±89.46µs -2.37%
For loop (Execution) 24.3±0.83µs 23.0±0.73µs +5.65%
For loop (Full) 230.0±8.17µs 211.2±7.82µs +8.90%
For loop (Lexer) 5.5±0.23µs 5.6±0.19µs -1.79%
For loop (Parser) 15.2±0.49µs 15.2±0.47µs 0.00%
Goal Symbols (Parser) 8.8±0.42µs 8.8±0.38µs 0.00%
Hello World (Lexer) 842.4±26.65ns 881.5±39.33ns -4.44%
Hello World (Parser) 2.2±0.11µs 2.2±0.08µs 0.00%
Long file (Parser) 6.8±0.33ms 6.7±0.15ms +1.49%
Number Object Access (Execution) 4.2±0.15µs 3.7±0.18µs +13.51%
Number Object Access (Full) 205.7±7.69µs 186.6±7.92µs +10.24%
Object Creation (Execution) 5.1±0.15µs 4.6±0.25µs +10.87%
Object Creation (Full) 226.4±11.11µs 211.1±6.37µs +7.25%
RegExp (Execution) 72.7±2.31µs 72.8±3.76µs -0.14%
RegExp (Full) 325.7±15.80µs 310.7±11.80µs +4.83%
RegExp Literal (Execution) 77.4±3.25µs 77.3±3.01µs +0.13%
RegExp Literal (Full) 292.1±8.23µs 277.7±7.75µs +5.19%
RegExp Literal Creation (Execution) 74.4±3.37µs 74.4±3.39µs 0.00%
RegExp Literal Creation (Full) 316.0±12.26µs 307.7±10.39µs +2.70%
Static Object Property Access (Execution) 5.2±0.24µs 4.8±0.15µs +8.33%
Static Object Property Access (Full) 201.2±6.83µs 190.7±7.69µs +5.51%
String Object Access (Execution) 7.8±0.38µs 6.8±0.24µs +14.71%
String Object Access (Full) 208.0±6.29µs 191.1±7.98µs +8.84%
String comparison (Execution) 7.0±0.28µs 6.3±0.26µs +11.11%
String comparison (Full) 207.2±8.81µs 192.7±5.85µs +7.52%
String concatenation (Execution) 5.8±0.35µs 5.2±0.17µs +11.54%
String concatenation (Full) 201.9±8.86µs 189.4±9.40µs +6.60%
String copy (Execution) 4.3±0.25µs 3.9±0.12µs +10.26%
String copy (Full) 198.0±9.82µs 181.4±4.39µs +9.15%
Symbols (Execution) 3.6±0.11µs 3.0±0.12µs +20.00%
Symbols (Full) 190.2±10.30µs 175.4±8.56µs +8.44%

@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for 68ef7fe

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 333.0±21.89ns 329.4±17.32ns +1.09%
Arithmetic operations (Full) 170.6±7.47µs 159.4±9.25µs +7.03%
Array access (Execution) 8.5±0.52µs 8.0±0.60µs +6.25%
Array access (Full) 194.4±14.89µs 177.4±7.14µs +9.58%
Array creation (Execution) 2.9±0.12ms 2.9±0.12ms 0.00%
Array creation (Full) 3.2±0.23ms 3.2±0.24ms 0.00%
Array pop (Execution) 1058.9±48.93µs 1072.7±63.04µs -1.29%
Array pop (Full) 1361.0±63.61µs 1314.6±97.29µs +3.53%
Boolean Object Access (Execution) 5.3±0.27µs 4.0±0.25µs +32.50%
Boolean Object Access (Full) 183.7±11.01µs 169.5±8.12µs +8.38%
Create Realm 408.5±21.46ns 394.9±19.80ns +3.44%
Dynamic Object Property Access (Execution) 5.7±0.27µs 4.8±0.22µs +18.75%
Dynamic Object Property Access (Full) 184.4±12.61µs 170.0±9.36µs +8.47%
Expression (Lexer) 2.2±0.11µs 2.2±0.19µs 0.00%
Expression (Parser) 4.9±0.36µs 4.8±0.29µs +2.08%
Fibonacci (Execution) 873.6±55.68µs 897.1±50.76µs -2.62%
Fibonacci (Full) 1026.0±45.82µs 1076.8±60.47µs -4.72%
For loop (Execution) 22.0±1.43µs 20.9±2.23µs +5.26%
For loop (Full) 197.2±9.07µs 185.1±10.13µs +6.54%
For loop (Lexer) 4.9±0.38µs 4.9±0.26µs 0.00%
For loop (Parser) 13.0±0.72µs 13.0±0.90µs 0.00%
Goal Symbols (Parser) 7.7±0.43µs 7.9±0.45µs -2.53%
Hello World (Lexer) 760.2±35.88ns 767.8±52.11ns -0.99%
Hello World (Parser) 1964.3±109.22ns 1989.6±135.28ns -1.27%
Long file (Parser) 6.0±0.22ms 6.0±0.24ms 0.00%
Number Object Access (Execution) 4.3±0.27µs 3.0±0.15µs +43.33%
Number Object Access (Full) 178.3±11.60µs 164.7±8.10µs +8.26%
Object Creation (Execution) 4.8±0.28µs 4.0±0.27µs +20.00%
Object Creation (Full) 206.5±12.51µs 190.1±10.12µs +8.63%
RegExp (Execution) 69.0±4.63µs 64.3±3.17µs +7.31%
RegExp (Full) 286.6±14.51µs 279.7±14.59µs +2.47%
RegExp Literal (Execution) 73.1±5.30µs 68.6±3.66µs +6.56%
RegExp Literal (Full) 256.9±12.19µs 242.0±10.62µs +6.16%
RegExp Literal Creation (Execution) 68.8±4.72µs 64.0±3.15µs +7.50%
RegExp Literal Creation (Full) 282.0±15.18µs 274.9±13.06µs +2.58%
Static Object Property Access (Execution) 5.1±0.39µs 4.3±0.30µs +18.60%
Static Object Property Access (Full) 181.5±9.42µs 170.9±8.37µs +6.20%
String Object Access (Execution) 7.6±0.63µs 6.0±0.40µs +26.67%
String Object Access (Full) 185.0±9.87µs 170.8±10.09µs +8.31%
String comparison (Execution) 6.8±0.45µs 5.5±0.32µs +23.64%
String comparison (Full) 185.5±10.06µs 170.6±7.50µs +8.73%
String concatenation (Execution) 5.6±0.23µs 4.6±0.24µs +21.74%
String concatenation (Full) 179.7±9.46µs 170.5±8.55µs +5.40%
String copy (Execution) 4.0±0.25µs 3.5±0.29µs +14.29%
String copy (Full) 173.9±8.26µs 164.9±8.51µs +5.46%
Symbols (Execution) 3.2±0.16µs 2.7±0.16µs +18.52%
Symbols (Full) 167.2±8.84µs 160.5±10.77µs +4.17%

@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for 3bae8e1

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 385.5±23.52ns 370.1±34.41ns +4.16%
Arithmetic operations (Full) 188.0±11.53µs 161.5±14.23µs +16.41%
Array access (Execution) 8.0±0.60µs 8.0±0.78µs 0.00%
Array access (Full) 213.1±25.18µs 187.5±19.88µs +13.65%
Array creation (Execution) 3.1±0.28ms 2.9±0.23ms +6.90%
Array creation (Full) 3.6±0.18ms 3.4±0.32ms +5.88%
Array pop (Execution) 1116.9±78.90µs 1070.8±124.72µs +4.31%
Array pop (Full) 1539.9±105.19µs 1335.4±102.60µs +15.31%
Boolean Object Access (Execution) 5.4±0.35µs 4.3±0.41µs +25.58%
Boolean Object Access (Full) 209.7±15.63µs 170.3±15.66µs +23.14%
Create Realm 436.2±51.07ns 403.5±39.58ns +8.10%
Dynamic Object Property Access (Execution) 5.4±0.48µs 4.9±0.53µs +10.20%
Dynamic Object Property Access (Full) 199.1±13.11µs 183.3±19.45µs +8.62%
Expression (Lexer) 2.6±0.19µs 2.4±0.27µs +8.33%
Expression (Parser) 5.5±0.49µs 4.9±0.56µs +12.24%
Fibonacci (Execution) 896.3±75.96µs 908.7±97.66µs -1.36%
Fibonacci (Full) 1152.6±96.89µs 1106.4±96.97µs +4.18%
For loop (Execution) 23.0±2.31µs 20.8±1.38µs +10.58%
For loop (Full) 224.2±18.39µs 198.6±19.89µs +12.89%
For loop (Lexer) 5.6±0.41µs 4.9±0.44µs +14.29%
For loop (Parser) 14.0±1.22µs 13.6±1.48µs +2.94%
Goal Symbols (Parser) 8.2±1.02µs 8.2±0.97µs 0.00%
Hello World (Lexer) 831.3±37.01ns 799.4±77.69ns +3.99%
Hello World (Parser) 2.2±0.24µs 1983.7±169.26ns +10.90%
Long file (Parser) 6.1±0.47ms 6.2±0.45ms -1.61%
Number Object Access (Execution) 4.2±0.21µs 3.3±0.30µs +27.27%
Number Object Access (Full) 198.3±12.57µs 180.7±19.48µs +9.74%
Object Creation (Execution) 4.6±0.38µs 4.1±0.45µs +12.20%
Object Creation (Full) 229.1±24.12µs 200.4±18.79µs +14.32%
RegExp (Execution) 75.1±5.15µs 69.4±6.72µs +8.21%
RegExp (Full) 336.6±52.34µs 294.3±47.77µs +14.37%
RegExp Literal (Execution) 76.8±5.60µs 71.2±6.27µs +7.87%
RegExp Literal (Full) 283.8±17.00µs 263.0±28.04µs +7.91%
RegExp Literal Creation (Execution) 72.7±6.23µs 70.7±6.73µs +2.83%
RegExp Literal Creation (Full) 318.9±32.03µs 281.6±19.49µs +13.25%
Static Object Property Access (Execution) 5.0±0.30µs 4.3±0.46µs +16.28%
Static Object Property Access (Full) 198.2±17.24µs 184.4±19.43µs +7.48%
String Object Access (Execution) 7.8±0.51µs 6.3±0.58µs +23.81%
String Object Access (Full) 219.2±24.78µs 175.9±18.26µs +24.62%
String comparison (Execution) 7.1±0.54µs 6.3±0.72µs +12.70%
String comparison (Full) 205.6±18.51µs 179.4±17.18µs +14.60%
String concatenation (Execution) 5.7±0.38µs 5.0±0.56µs +14.00%
String concatenation (Full) 197.2±12.70µs 179.2±16.81µs +10.04%
String copy (Execution) 4.5±0.27µs 3.5±0.32µs +28.57%
String copy (Full) 192.7±14.71µs 174.6±18.13µs +10.37%
Symbols (Execution) 3.4±0.31µs 2.9±0.34µs +17.24%
Symbols (Full) 196.1±14.64µs 169.4±19.03µs +15.76%

@github-actions
Copy link

github-actions bot commented Aug 5, 2020

Benchmark for 57fbec8

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 363.7±9.52ns 349.5±15.88ns +4.06%
Arithmetic operations (Full) 184.7±10.12µs 178.0±10.94µs +3.76%
Array access (Execution) 8.2±0.42µs 8.2±0.30µs 0.00%
Array access (Full) 196.0±8.21µs 183.7±7.90µs +6.70%
Array creation (Execution) 3.1±0.09ms 3.1±0.28ms 0.00%
Array creation (Full) 3.5±0.12ms 3.3±0.10ms +6.06%
Array pop (Execution) 1125.4±41.59µs 1106.6±44.93µs +1.70%
Array pop (Full) 1455.4±80.02µs 1383.5±62.76µs +5.20%
Boolean Object Access (Execution) 5.0±0.19µs 4.1±0.15µs +21.95%
Boolean Object Access (Full) 184.7±6.14µs 183.9±8.35µs +0.44%
Create Realm 440.5±15.90ns 417.1±23.85ns +5.61%
Dynamic Object Property Access (Execution) 5.6±0.35µs 5.1±0.35µs +9.80%
Dynamic Object Property Access (Full) 191.1±12.09µs 182.9±7.41µs +4.48%
Expression (Lexer) 2.4±0.10µs 2.5±0.14µs -4.00%
Expression (Parser) 5.1±0.22µs 5.3±0.21µs -3.77%
Fibonacci (Execution) 874.7±39.53µs 911.4±48.35µs -4.03%
Fibonacci (Full) 1131.2±56.75µs 1118.5±87.25µs +1.14%
For loop (Execution) 22.4±0.90µs 21.3±1.09µs +5.16%
For loop (Full) 217.1±14.10µs 199.4±16.29µs +8.88%
For loop (Lexer) 5.2±0.20µs 5.3±0.51µs -1.89%
For loop (Parser) 14.2±0.77µs 14.6±1.09µs -2.74%
Goal Symbols (Parser) 8.2±0.42µs 8.3±0.34µs -1.20%
Hello World (Lexer) 844.9±41.17ns 828.1±26.05ns +2.03%
Hello World (Parser) 2.0±0.11µs 2.1±0.09µs -4.76%
Long file (Parser) 6.2±0.17ms 6.5±0.16ms -4.62%
Number Object Access (Execution) 4.0±0.16µs 3.3±0.15µs +21.21%
Number Object Access (Full) 183.6±5.53µs 181.7±9.43µs +1.05%
Object Creation (Execution) 4.9±0.21µs 4.2±0.21µs +16.67%
Object Creation (Full) 213.3±11.89µs 207.2±14.70µs +2.94%
RegExp (Execution) 67.1±2.74µs 67.7±2.84µs -0.89%
RegExp (Full) 305.9±25.12µs 288.5±15.36µs +6.03%
RegExp Literal (Execution) 71.3±3.31µs 73.2±4.26µs -2.60%
RegExp Literal (Full) 275.9±10.85µs 254.9±10.84µs +8.24%
RegExp Literal Creation (Execution) 69.0±3.35µs 69.2±3.91µs -0.29%
RegExp Literal Creation (Full) 312.0±11.28µs 284.7±11.34µs +9.59%
Static Object Property Access (Execution) 5.1±0.32µs 4.5±0.26µs +13.33%
Static Object Property Access (Full) 193.2±9.03µs 184.7±10.64µs +4.60%
String Object Access (Execution) 7.2±0.22µs 6.1±0.27µs +18.03%
String Object Access (Full) 191.6±7.98µs 188.8±10.22µs +1.48%
String comparison (Execution) 6.8±0.53µs 5.9±0.32µs +15.25%
String comparison (Full) 190.4±9.55µs 182.8±10.37µs +4.16%
String concatenation (Execution) 5.3±0.21µs 4.8±0.25µs +10.42%
String concatenation (Full) 189.1±11.18µs 179.3±10.22µs +5.47%
String copy (Execution) 4.1±0.16µs 3.5±0.15µs +17.14%
String copy (Full) 186.5±8.82µs 183.9±4.65µs +1.41%
Symbols (Execution) 3.3±0.17µs 2.8±0.14µs +17.86%
Symbols (Full) 180.2±8.43µs 165.6±17.60µs +8.82%

@github-actions
Copy link

github-actions bot commented Aug 6, 2020

Benchmark for 4cbfc08

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 367.0±14.89ns 361.5±9.99ns +1.52%
Arithmetic operations (Full) 160.9±5.25µs 158.2±2.73µs +1.71%
Array access (Execution) 7.9±0.23µs 7.9±0.22µs 0.00%
Array access (Full) 180.2±10.52µs 174.2±4.21µs +3.44%
Array creation (Execution) 3.2±0.06ms 3.3±0.08ms -3.03%
Array creation (Full) 3.5±0.07ms 3.6±0.09ms -2.78%
Array pop (Execution) 1165.7±39.94µs 1153.9±38.93µs +1.02%
Array pop (Full) 1468.8±40.83µs 1451.7±46.69µs +1.18%
Boolean Object Access (Execution) 4.9±0.21µs 4.2±0.45µs +16.67%
Boolean Object Access (Full) 168.5±3.92µs 170.0±5.24µs -0.88%
Create Realm 439.5±12.72ns 417.8±11.93ns +5.19%
Dynamic Object Property Access (Execution) 5.1±0.18µs 4.7±0.14µs +8.51%
Dynamic Object Property Access (Full) 169.7±3.19µs 168.6±5.82µs +0.65%
Expression (Lexer) 2.3±0.06µs 2.4±0.04µs -4.17%
Expression (Parser) 5.1±0.25µs 5.3±0.17µs -3.77%
Fibonacci (Execution) 800.0±24.38µs 830.1±23.59µs -3.63%
Fibonacci (Full) 980.7±30.79µs 1063.9±28.21µs -7.82%
For loop (Execution) 21.0±0.70µs 20.4±0.53µs +2.94%
For loop (Full) 190.6±5.01µs 190.6±9.20µs 0.00%
For loop (Lexer) 4.9±0.12µs 5.2±0.15µs -5.77%
For loop (Parser) 13.3±0.41µs 13.5±0.38µs -1.48%
Goal Symbols (Parser) 7.9±0.21µs 8.2±0.19µs -3.66%
Hello World (Lexer) 761.8±14.50ns 810.0±22.91ns -5.95%
Hello World (Parser) 2.0±0.09µs 2.1±0.05µs -4.76%
Long file (Parser) 6.0±0.11ms 6.1±0.11ms -1.64%
Number Object Access (Execution) 3.8±0.13µs 3.2±0.11µs +18.75%
Number Object Access (Full) 167.3±6.43µs 165.5±4.05µs +1.09%
Object Creation (Execution) 4.4±0.23µs 4.0±0.12µs +10.00%
Object Creation (Full) 190.2±5.06µs 188.4±6.08µs +0.96%
RegExp (Execution) 62.8±2.83µs 61.4±2.09µs +2.28%
RegExp (Full) 272.9±9.60µs 274.9±7.63µs -0.73%
RegExp Literal (Execution) 65.5±1.98µs 64.7±1.89µs +1.24%
RegExp Literal (Full) 238.9±6.29µs 237.6±6.49µs +0.55%
RegExp Literal Creation (Execution) 63.5±2.51µs 61.8±2.15µs +2.75%
RegExp Literal Creation (Full) 273.6±10.03µs 271.9±9.74µs +0.63%
Static Object Property Access (Execution) 4.5±0.16µs 4.1±0.11µs +9.76%
Static Object Property Access (Full) 169.1±3.71µs 166.2±4.21µs +1.74%
String Object Access (Execution) 7.0±0.19µs 6.1±0.24µs +14.75%
String Object Access (Full) 173.9±4.97µs 172.6±4.34µs +0.75%
String comparison (Execution) 6.2±0.25µs 5.4±0.14µs +14.81%
String comparison (Full) 173.1±12.20µs 170.4±5.76µs +1.58%
String concatenation (Execution) 4.9±0.18µs 4.4±0.15µs +11.36%
String concatenation (Full) 170.7±6.59µs 167.5±5.11µs +1.91%
String copy (Execution) 3.6±0.13µs 3.3±0.10µs +9.09%
String copy (Full) 163.5±5.07µs 160.4±3.27µs +1.93%
Symbols (Execution) 3.0±0.14µs 2.7±0.24µs +11.11%
Symbols (Full) 157.4±3.27µs 156.9±6.77µs +0.32%

@HalidOdat HalidOdat marked this pull request as ready for review August 6, 2020 07:56
@HalidOdat HalidOdat changed the title Index PropertyKey and Object iterators Index PropertyKey, Object iterators and symbol support Aug 6, 2020
@github-actions
Copy link

github-actions bot commented Aug 6, 2020

Benchmark for 0a85013

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 397.5±16.98ns 453.3±16.96ns -12.31%
Arithmetic operations (Full) 193.3±8.67µs 192.1±10.46µs +0.62%
Array access (Execution) 9.5±0.49µs 9.4±0.49µs +1.06%
Array access (Full) 225.6±11.38µs 211.6±10.06µs +6.62%
Array creation (Execution) 3.5±0.12ms 3.6±0.12ms -2.78%
Array creation (Full) 3.8±0.11ms 3.9±0.11ms -2.56%
Array pop (Execution) 1268.2±57.77µs 1303.0±58.68µs -2.67%
Array pop (Full) 1601.3±90.76µs 1569.2±65.83µs +2.05%
Boolean Object Access (Execution) 5.7±0.22µs 4.7±0.36µs +21.28%
Boolean Object Access (Full) 212.1±10.59µs 208.0±18.65µs +1.97%
Create Realm 480.9±20.95ns 465.2±19.99ns +3.37%
Dynamic Object Property Access (Execution) 5.8±0.37µs 5.5±0.36µs +5.45%
Dynamic Object Property Access (Full) 215.4±13.88µs 205.2±10.28µs +4.97%
Expression (Lexer) 2.6±0.21µs 2.6±0.13µs 0.00%
Expression (Parser) 5.8±0.32µs 5.7±0.31µs +1.75%
Fibonacci (Execution) 997.3±47.00µs 1054.5±42.48µs -5.42%
Fibonacci (Full) 1195.3±41.72µs 1248.0±67.11µs -4.22%
For loop (Execution) 25.0±1.04µs 24.1±1.03µs +3.73%
For loop (Full) 230.4±9.09µs 217.5±11.97µs +5.93%
For loop (Lexer) 5.6±0.17µs 5.8±0.27µs -3.45%
For loop (Parser) 16.0±0.61µs 16.0±0.56µs 0.00%
Goal Symbols (Parser) 9.2±0.48µs 9.4±0.79µs -2.13%
Hello World (Lexer) 881.4±63.72ns 904.3±43.45ns -2.53%
Hello World (Parser) 2.3±0.10µs 2.4±0.10µs -4.17%
Long file (Parser) 7.0±0.18ms 7.9±2.61ms -11.39%
Number Object Access (Execution) 4.4±0.20µs 3.8±0.26µs +15.79%
Number Object Access (Full) 206.1±8.27µs 209.6±11.83µs -1.67%
Object Creation (Execution) 5.0±0.22µs 4.9±0.22µs +2.04%
Object Creation (Full) 235.3±27.12µs 227.2±10.99µs +3.57%
RegExp (Execution) 75.6±5.35µs 74.8±3.70µs +1.07%
RegExp (Full) 335.7±17.19µs 318.3±16.33µs +5.47%
RegExp Literal (Execution) 78.4±3.05µs 80.2±3.29µs -2.24%
RegExp Literal (Full) 299.5±13.74µs 294.6±17.52µs +1.66%
RegExp Literal Creation (Execution) 74.0±3.47µs 74.6±4.17µs -0.80%
RegExp Literal Creation (Full) 328.9±18.41µs 317.9±18.11µs +3.46%
Static Object Property Access (Execution) 5.1±0.24µs 5.1±0.35µs 0.00%
Static Object Property Access (Full) 207.3±15.24µs 199.5±6.43µs +3.91%
String Object Access (Execution) 7.9±0.31µs 7.2±1.34µs +9.72%
String Object Access (Full) 212.3±14.42µs 206.8±10.73µs +2.66%
String comparison (Execution) 7.4±0.33µs 6.6±0.32µs +12.12%
String comparison (Full) 214.5±8.29µs 203.3±10.96µs +5.51%
String concatenation (Execution) 5.8±0.38µs 5.3±0.38µs +9.43%
String concatenation (Full) 206.1±14.06µs 201.0±9.08µs +2.54%
String copy (Execution) 4.2±0.16µs 4.1±0.18µs +2.44%
String copy (Full) 206.7±11.75µs 198.9±11.94µs +3.92%
Symbols (Execution) 3.5±0.13µs 3.1±0.14µs +12.90%
Symbols (Full) 196.8±11.46µs 181.8±8.81µs +8.25%

@github-actions
Copy link

github-actions bot commented Aug 6, 2020

Benchmark for 382a3a0

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 358.3±19.51ns 409.7±19.57ns -12.55%
Arithmetic operations (Full) 182.4±13.21µs 178.0±8.12µs +2.47%
Array access (Execution) 8.5±0.44µs 8.9±0.50µs -4.49%
Array access (Full) 205.6±6.60µs 192.4±15.09µs +6.86%
Array creation (Execution) 3.2±0.13ms 3.3±0.18ms -3.03%
Array creation (Full) 3.5±0.13ms 3.4±0.14ms +2.94%
Array pop (Execution) 1191.2±49.73µs 1128.6±60.65µs +5.55%
Array pop (Full) 1462.7±81.64µs 1405.5±76.11µs +4.07%
Boolean Object Access (Execution) 5.6±0.45µs 4.6±0.29µs +21.74%
Boolean Object Access (Full) 201.3±13.28µs 185.3±12.34µs +8.63%
Create Realm 429.4±31.71ns 450.6±24.47ns -4.70%
Dynamic Object Property Access (Execution) 5.8±0.43µs 5.3±0.23µs +9.43%
Dynamic Object Property Access (Full) 191.5±8.87µs 181.9±7.10µs +5.28%
Expression (Lexer) 2.5±0.16µs 2.4±0.11µs +4.17%
Expression (Parser) 5.1±0.20µs 5.5±0.23µs -7.27%
Fibonacci (Execution) 918.5±41.85µs 1001.4±41.54µs -8.28%
Fibonacci (Full) 1160.0±76.48µs 1161.1±52.46µs -0.09%
For loop (Execution) 22.7±1.53µs 23.3±0.90µs -2.58%
For loop (Full) 218.0±11.57µs 201.2±9.38µs +8.35%
For loop (Lexer) 5.2±0.28µs 5.4±0.24µs -3.70%
For loop (Parser) 14.0±0.67µs 14.0±0.69µs 0.00%
Goal Symbols (Parser) 8.8±0.59µs 8.5±0.47µs +3.53%
Hello World (Lexer) 816.3±49.55ns 879.4±35.27ns -7.18%
Hello World (Parser) 2.1±0.12µs 2.2±0.18µs -4.55%
Long file (Parser) 6.4±0.19ms 6.4±0.19ms 0.00%
Number Object Access (Execution) 4.1±0.19µs 3.5±0.19µs +17.14%
Number Object Access (Full) 194.0±10.14µs 181.7±7.48µs +6.77%
Object Creation (Execution) 4.8±0.27µs 4.5±0.31µs +6.67%
Object Creation (Full) 225.5±15.37µs 205.7±10.21µs +9.63%
RegExp (Execution) 71.8±4.23µs 67.8±5.22µs +5.90%
RegExp (Full) 306.2±14.80µs 305.5±11.99µs +0.23%
RegExp Literal (Execution) 73.9±3.39µs 71.2±4.52µs +3.79%
RegExp Literal (Full) 277.6±21.43µs 261.9±13.74µs +5.99%
RegExp Literal Creation (Execution) 71.4±3.53µs 71.2±5.29µs +0.28%
RegExp Literal Creation (Full) 305.2±15.67µs 292.9±15.82µs +4.20%
Static Object Property Access (Execution) 5.0±0.20µs 4.6±0.25µs +8.70%
Static Object Property Access (Full) 198.7±10.08µs 180.5±7.34µs +10.08%
String Object Access (Execution) 7.4±0.42µs 6.7±0.30µs +10.45%
String Object Access (Full) 197.2±22.09µs 188.6±9.31µs +4.56%
String comparison (Execution) 6.9±0.36µs 6.4±0.35µs +7.81%
String comparison (Full) 203.4±13.47µs 188.5±11.26µs +7.90%
String concatenation (Execution) 5.4±0.22µs 4.9±0.24µs +10.20%
String concatenation (Full) 199.9±11.00µs 183.2±15.20µs +9.12%
String copy (Execution) 4.0±0.22µs 3.8±0.20µs +5.26%
String copy (Full) 194.8±9.38µs 176.2±6.77µs +10.56%
Symbols (Execution) 3.4±0.23µs 3.0±0.14µs +13.33%
Symbols (Full) 185.2±9.56µs 169.7±9.61µs +9.13%

@HalidOdat HalidOdat force-pushed the index-property-key branch from 36f1321 to 7f054cb Compare August 8, 2020 11:27
@HalidOdat HalidOdat linked an issue Aug 8, 2020 that may be closed by this pull request
@github-actions
Copy link

github-actions bot commented Aug 8, 2020

Benchmark for 2eb34c2

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 349.2±24.29ns 380.6±18.07ns -8.25%
Arithmetic operations (Full) 233.8±8.52µs 230.6±8.37µs +1.39%
Array access (Execution) 8.2±0.30µs 9.3±0.33µs -11.83%
Array access (Full) 252.8±10.97µs 243.5±6.17µs +3.82%
Array creation (Execution) 2.9±0.11ms 3.3±0.18ms -12.12%
Array creation (Full) 3.7±0.16ms 3.7±0.11ms 0.00%
Array pop (Execution) 1058.1±49.90µs 1171.4±63.31µs -9.67%
Array pop (Full) 1600.8±63.24µs 1518.4±52.44µs +5.43%
Boolean Object Access (Execution) 5.1±0.31µs 4.7±0.21µs +8.51%
Boolean Object Access (Full) 248.8±8.95µs 241.5±7.62µs +3.02%
Create Realm 454.2±19.78ns 475.7±27.58ns -4.52%
Dynamic Object Property Access (Execution) 5.8±0.77µs 5.6±0.19µs +3.57%
Dynamic Object Property Access (Full) 253.6±5.84µs 235.0±8.39µs +7.91%
Expression (Lexer) 2.2±0.15µs 2.5±0.05µs -12.00%
Expression (Parser) 5.2±0.33µs 5.9±0.16µs -11.86%
Fibonacci (Execution) 888.4±48.82µs 1024.6±31.39µs -13.29%
Fibonacci (Full) 1125.4±82.84µs 1272.7±46.09µs -11.57%
For loop (Execution) 21.5±1.36µs 23.4±0.79µs -8.12%
For loop (Full) 243.3±14.06µs 261.2±11.66µs -6.85%
For loop (Lexer) 5.7±0.84µs 5.5±0.15µs +3.64%
For loop (Parser) 15.1±0.62µs 15.0±0.39µs +0.67%
Goal Symbols (Parser) 8.8±0.45µs 9.0±0.34µs -2.22%
Hello World (Lexer) 788.7±43.83ns 889.9±20.52ns -11.37%
Hello World (Parser) 2.3±0.09µs 2.3±0.09µs 0.00%
Long file (Parser) 6.7±0.18ms 6.8±0.13ms -1.47%
Number Object Access (Execution) 4.1±0.20µs 3.7±0.15µs +10.81%
Number Object Access (Full) 233.0±18.33µs 233.4±5.44µs -0.17%
Object Creation (Execution) 4.6±0.40µs 4.6±0.19µs 0.00%
Object Creation (Full) 254.5±14.34µs 266.1±14.44µs -4.36%
RegExp (Execution) 69.1±6.22µs 72.4±3.58µs -4.56%
RegExp (Full) 368.7±7.59µs 364.8±18.90µs +1.07%
RegExp Literal (Execution) 71.9±4.09µs 76.5±2.44µs -6.01%
RegExp Literal (Full) 333.3±9.49µs 324.6±13.76µs +2.68%
RegExp Literal Creation (Execution) 67.5±4.43µs 72.5±3.00µs -6.90%
RegExp Literal Creation (Full) 364.9±7.07µs 361.2±21.49µs +1.02%
Static Object Property Access (Execution) 5.0±0.28µs 5.0±0.18µs 0.00%
Static Object Property Access (Full) 250.5±6.83µs 238.3±5.87µs +5.12%
String Object Access (Execution) 7.1±0.37µs 7.3±0.58µs -2.74%
String Object Access (Full) 243.8±10.64µs 245.4±15.19µs -0.65%
String comparison (Execution) 6.1±0.31µs 6.6±0.22µs -7.58%
String comparison (Full) 243.6±12.36µs 237.1±4.75µs +2.74%
String concatenation (Execution) 5.1±0.27µs 5.4±0.22µs -5.56%
String concatenation (Full) 243.9±8.98µs 244.1±14.55µs -0.08%
String copy (Execution) 3.9±0.23µs 3.9±0.11µs 0.00%
String copy (Full) 233.3±10.19µs 233.3±5.87µs 0.00%
Symbols (Execution) 3.1±0.15µs 3.2±0.17µs -3.13%
Symbols (Full) 200.2±10.87µs 215.1±7.58µs -6.93%

@HalidOdat HalidOdat linked an issue Aug 8, 2020 that may be closed by this pull request
@github-actions
Copy link

github-actions bot commented Aug 8, 2020

Benchmark for 1a96533

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 384.2±28.12ns 328.5±23.93ns +16.96%
Arithmetic operations (Full) 219.7±25.49µs 206.3±16.43µs +6.50%
Array access (Execution) 8.2±0.63µs 7.8±0.67µs +5.13%
Array access (Full) 225.4±13.81µs 223.2±14.61µs +0.99%
Array creation (Execution) 2.8±0.16ms 2.9±0.21ms -3.45%
Array creation (Full) 3.2±0.19ms 3.2±0.15ms 0.00%
Array pop (Execution) 1057.8±91.80µs 999.1±70.99µs +5.88%
Array pop (Full) 1416.1±101.16µs 1373.9±118.15µs +3.07%
Boolean Object Access (Execution) 4.9±0.38µs 4.1±0.28µs +19.51%
Boolean Object Access (Full) 221.7±14.17µs 208.8±12.90µs +6.18%
Create Realm 443.0±49.47ns 405.2±24.66ns +9.33%
Dynamic Object Property Access (Execution) 5.3±0.31µs 4.8±0.32µs +10.42%
Dynamic Object Property Access (Full) 222.7±14.84µs 214.4±16.37µs +3.87%
Expression (Lexer) 2.2±0.15µs 2.2±0.17µs 0.00%
Expression (Parser) 4.7±0.36µs 4.7±0.35µs 0.00%
Fibonacci (Execution) 826.0±45.84µs 848.8±41.32µs -2.69%
Fibonacci (Full) 1059.6±85.11µs 1109.8±75.35µs -4.52%
For loop (Execution) 20.6±1.26µs 20.1±1.28µs +2.49%
For loop (Full) 232.7±16.26µs 235.7±15.59µs -1.27%
For loop (Lexer) 4.7±0.38µs 4.8±0.43µs -2.08%
For loop (Parser) 13.1±1.07µs 13.1±0.89µs 0.00%
Goal Symbols (Parser) 7.8±0.61µs 7.8±1.10µs 0.00%
Hello World (Lexer) 806.6±42.39ns 787.5±55.48ns +2.43%
Hello World (Parser) 2.0±0.13µs 1955.1±153.74ns +2.30%
Long file (Parser) 5.9±0.27ms 5.9±0.27ms 0.00%
Number Object Access (Execution) 3.8±0.34µs 3.2±0.26µs +18.75%
Number Object Access (Full) 213.8±14.12µs 208.3±16.41µs +2.64%
Object Creation (Execution) 4.6±0.59µs 4.2±0.31µs +9.52%
Object Creation (Full) 241.4±18.28µs 235.0±23.84µs +2.72%
RegExp (Execution) 64.3±5.52µs 61.3±3.68µs +4.89%
RegExp (Full) 315.8±18.19µs 312.5±16.31µs +1.06%
RegExp Literal (Execution) 67.3±4.32µs 65.9±5.12µs +2.12%
RegExp Literal (Full) 306.7±30.76µs 283.7±18.20µs +8.11%
RegExp Literal Creation (Execution) 62.8±4.41µs 62.8±9.48µs 0.00%
RegExp Literal Creation (Full) 318.5±23.48µs 310.2±23.67µs +2.68%
Static Object Property Access (Execution) 4.8±0.38µs 4.6±0.51µs +4.35%
Static Object Property Access (Full) 216.9±14.92µs 217.7±20.60µs -0.37%
String Object Access (Execution) 6.8±0.40µs 6.3±0.53µs +7.94%
String Object Access (Full) 228.8±14.51µs 208.8±14.11µs +9.58%
String comparison (Execution) 6.1±0.52µs 5.5±0.39µs +10.91%
String comparison (Full) 225.5±16.85µs 222.1±18.83µs +1.53%
String concatenation (Execution) 4.7±0.29µs 4.6±0.37µs +2.17%
String concatenation (Full) 220.8±16.77µs 210.0±15.61µs +5.14%
String copy (Execution) 3.9±0.47µs 3.5±0.26µs +11.43%
String copy (Full) 213.7±11.41µs 207.8±14.49µs +2.84%
Symbols (Execution) 3.1±0.20µs 2.8±0.19µs +10.71%
Symbols (Full) 192.4±14.86µs 183.3±10.19µs +4.96%

@HalidOdat HalidOdat added this to the v0.10.0 milestone Aug 8, 2020
@github-actions
Copy link

github-actions bot commented Aug 8, 2020

Benchmark for 720ecd7

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 366.9±12.07ns 359.0±15.79ns +2.20%
Arithmetic operations (Full) 213.0±7.85µs 203.0±21.80µs +4.93%
Array access (Execution) 8.0±0.37µs 7.9±0.21µs +1.27%
Array access (Full) 234.0±9.36µs 215.2±5.96µs +8.74%
Array creation (Execution) 3.3±0.09ms 3.3±0.09ms 0.00%
Array creation (Full) 3.6±0.08ms 3.6±0.12ms 0.00%
Array pop (Execution) 1190.1±31.32µs 1158.9±50.79µs +2.69%
Array pop (Full) 1533.8±95.77µs 1488.7±33.08µs +3.03%
Boolean Object Access (Execution) 5.0±0.14µs 4.1±0.17µs +21.95%
Boolean Object Access (Full) 223.5±6.02µs 211.3±5.82µs +5.77%
Create Realm 473.7±17.85ns 454.9±15.34ns +4.13%
Dynamic Object Property Access (Execution) 5.2±0.16µs 4.8±0.20µs +8.33%
Dynamic Object Property Access (Full) 223.8±8.51µs 212.2±6.88µs +5.47%
Expression (Lexer) 2.4±0.17µs 2.4±0.07µs 0.00%
Expression (Parser) 5.3±0.14µs 5.3±0.16µs 0.00%
Fibonacci (Execution) 800.0±31.51µs 853.6±23.10µs -6.28%
Fibonacci (Full) 1086.6±48.05µs 1109.9±40.45µs -2.10%
For loop (Execution) 21.3±0.69µs 21.4±0.75µs -0.47%
For loop (Full) 247.4±11.01µs 233.4±5.17µs +6.00%
For loop (Lexer) 5.3±0.14µs 5.3±0.22µs 0.00%
For loop (Parser) 13.7±0.42µs 13.7±0.58µs 0.00%
Goal Symbols (Parser) 8.3±0.34µs 8.3±0.45µs 0.00%
Hello World (Lexer) 809.7±25.63ns 801.4±26.82ns +1.04%
Hello World (Parser) 2.1±0.09µs 2.1±0.11µs 0.00%
Long file (Parser) 6.1±0.15ms 6.2±0.17ms -1.61%
Number Object Access (Execution) 3.9±0.14µs 3.3±0.16µs +18.18%
Number Object Access (Full) 218.5±9.34µs 203.8±12.90µs +7.21%
Object Creation (Execution) 4.3±0.10µs 4.0±0.29µs +7.50%
Object Creation (Full) 246.9±8.39µs 234.5±10.45µs +5.29%
RegExp (Execution) 65.6±2.53µs 65.2±1.66µs +0.61%
RegExp (Full) 326.9±13.38µs 318.6±14.64µs +2.61%
RegExp Literal (Execution) 68.7±2.57µs 67.2±2.32µs +2.23%
RegExp Literal (Full) 297.6±9.73µs 285.1±15.59µs +4.38%
RegExp Literal Creation (Execution) 65.8±3.04µs 66.6±3.82µs -1.20%
RegExp Literal Creation (Full) 329.3±14.21µs 314.7±10.80µs +4.64%
Static Object Property Access (Execution) 4.6±0.31µs 4.2±0.20µs +9.52%
Static Object Property Access (Full) 224.8±9.93µs 206.5±6.77µs +8.86%
String Object Access (Execution) 7.2±0.39µs 6.4±0.23µs +12.50%
String Object Access (Full) 225.6±5.56µs 207.6±6.97µs +8.67%
String comparison (Execution) 6.3±0.40µs 5.7±0.18µs +10.53%
String comparison (Full) 224.7±6.85µs 213.1±7.95µs +5.44%
String concatenation (Execution) 5.0±0.25µs 4.5±0.17µs +11.11%
String concatenation (Full) 222.6±6.20µs 211.9±9.24µs +5.05%
String copy (Execution) 3.7±0.26µs 3.4±0.10µs +8.82%
String copy (Full) 218.6±11.83µs 203.2±8.76µs +7.58%
Symbols (Execution) 3.1±0.16µs 2.7±0.09µs +14.81%
Symbols (Full) 204.0±8.56µs 190.0±5.90µs +7.37%

@github-actions
Copy link

Benchmark for daea89b

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 312.6±15.90ns 327.2±15.79ns -4.46%
Arithmetic operations (Full) 227.9±12.84µs 209.3±13.73µs +8.89%
Array access (Execution) 7.2±0.41µs 7.1±0.45µs +1.41%
Array access (Full) 242.0±16.20µs 221.5±12.04µs +9.26%
Array creation (Execution) 2.9±0.11ms 2.8±0.13ms +3.57%
Array creation (Full) 3.2±0.14ms 3.2±0.13ms 0.00%
Array pop (Execution) 1079.8±70.50µs 960.7±58.22µs +12.40%
Array pop (Full) 1386.2±71.00µs 1338.3±71.15µs +3.58%
Boolean Object Access (Execution) 4.3±0.22µs 3.6±0.19µs +19.44%
Boolean Object Access (Full) 229.2±12.93µs 213.1±13.88µs +7.56%
Create Realm 421.9±21.38ns 391.0±20.30ns +7.90%
Dynamic Object Property Access (Execution) 4.4±0.25µs 4.2±0.24µs +4.76%
Dynamic Object Property Access (Full) 230.7±14.59µs 219.0±12.45µs +5.34%
Expression (Lexer) 2.1±0.13µs 1993.3±115.77ns +5.35%
Expression (Parser) 4.6±0.24µs 4.6±0.28µs 0.00%
Fibonacci (Execution) 717.8±42.65µs 753.5±43.76µs -4.74%
Fibonacci (Full) 956.5±49.39µs 996.4±50.36µs -4.00%
For loop (Execution) 19.7±1.25µs 19.0±1.17µs +3.68%
For loop (Full) 244.7±11.92µs 234.1±11.33µs +4.53%
For loop (Lexer) 4.6±0.29µs 4.7±0.29µs -2.13%
For loop (Parser) 12.3±0.72µs 11.8±0.56µs +4.24%
Goal Symbols (Parser) 7.5±0.38µs 7.3±0.47µs +2.74%
Hello World (Lexer) 725.0±40.91ns 735.7±53.04ns -1.45%
Hello World (Parser) 1821.9±124.07ns 1840.0±119.59ns -0.98%
Long file (Parser) 5.8±0.26ms 5.4±0.22ms +7.41%
Number Object Access (Execution) 3.5±0.23µs 2.8±0.14µs +25.00%
Number Object Access (Full) 226.2±14.09µs 211.3±12.70µs +7.05%
Object Creation (Execution) 3.7±0.20µs 3.6±0.21µs +2.78%
Object Creation (Full) 270.3±18.25µs 262.4±15.77µs +3.01%
RegExp (Execution) 57.8±3.10µs 58.0±3.84µs -0.34%
RegExp (Full) 362.4±18.57µs 343.5±29.08µs +5.50%
RegExp Literal (Execution) 59.7±3.46µs 59.5±3.80µs +0.34%
RegExp Literal (Full) 301.1±15.65µs 286.6±20.03µs +5.06%
RegExp Literal Creation (Execution) 57.6±4.30µs 56.4±4.18µs +2.13%
RegExp Literal Creation (Full) 351.4±21.14µs 345.4±19.45µs +1.74%
Static Object Property Access (Execution) 3.9±0.24µs 3.8±0.21µs +2.63%
Static Object Property Access (Full) 228.2±14.03µs 220.3±12.69µs +3.59%
String Object Access (Execution) 6.2±0.37µs 5.8±0.48µs +6.90%
String Object Access (Full) 229.7±13.64µs 215.1±12.70µs +6.79%
String comparison (Execution) 5.5±0.30µs 5.1±0.36µs +7.84%
String comparison (Full) 237.7±12.23µs 213.8±12.48µs +11.18%
String concatenation (Execution) 4.4±0.25µs 4.1±0.23µs +7.32%
String concatenation (Full) 229.4±14.07µs 209.3±13.72µs +9.60%
String copy (Execution) 3.1±0.15µs 3.0±0.17µs +3.33%
String copy (Full) 222.5±13.42µs 208.3±12.12µs +6.82%
Symbols (Execution) 2.7±0.16µs 2.4±0.15µs +12.50%
Symbols (Full) 207.8±10.55µs 196.8±10.96µs +5.59%

@github-actions
Copy link

Benchmark for 591096b

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 359.7±35.82ns 358.5±18.30ns +0.33%
Arithmetic operations (Full) 257.8±16.88µs 252.7±14.21µs +2.02%
Array access (Execution) 8.8±0.70µs 8.1±0.65µs +8.64%
Array access (Full) 279.5±14.62µs 267.7±21.86µs +4.41%
Array creation (Execution) 3.1±0.13ms 3.0±0.21ms +3.33%
Array creation (Full) 3.3±0.20ms 3.4±0.20ms -2.94%
Array pop (Execution) 1097.9±78.15µs 1096.8±122.55µs +0.10%
Array pop (Full) 1518.9±59.64µs 1518.0±91.65µs +0.06%
Boolean Object Access (Execution) 5.4±0.43µs 4.5±0.40µs +20.00%
Boolean Object Access (Full) 272.4±19.42µs 266.7±20.34µs +2.14%
Create Realm 461.0±51.62ns 494.6±27.34ns -6.79%
Dynamic Object Property Access (Execution) 5.6±0.40µs 5.4±0.43µs +3.70%
Dynamic Object Property Access (Full) 268.6±15.96µs 271.6±22.08µs -1.10%
Expression (Lexer) 2.4±0.16µs 2.3±0.21µs +4.35%
Expression (Parser) 5.1±0.34µs 4.8±0.47µs +6.25%
Fibonacci (Execution) 867.7±42.48µs 973.7±60.84µs -10.89%
Fibonacci (Full) 1230.6±89.96µs 1234.6±85.79µs -0.32%
For loop (Execution) 23.7±1.98µs 23.4±4.38µs +1.28%
For loop (Full) 294.5±23.82µs 273.5±23.02µs +7.68%
For loop (Lexer) 5.3±0.33µs 5.1±0.45µs +3.92%
For loop (Parser) 13.9±0.92µs 14.2±1.04µs -2.11%
Goal Symbols (Parser) 8.5±0.65µs 8.3±0.57µs +2.41%
Hello World (Lexer) 871.0±100.42ns 790.4±61.55ns +10.20%
Hello World (Parser) 2.2±0.12µs 2.0±0.21µs +10.00%
Long file (Parser) 6.4±0.31ms 6.4±0.45ms 0.00%
Number Object Access (Execution) 4.1±0.28µs 3.7±0.29µs +10.81%
Number Object Access (Full) 267.9±12.59µs 253.8±19.26µs +5.56%
Object Creation (Execution) 4.7±0.29µs 4.5±0.30µs +4.44%
Object Creation (Full) 319.2±19.66µs 295.6±18.53µs +7.98%
RegExp (Execution) 68.7±4.73µs 70.3±3.71µs -2.28%
RegExp (Full) 418.6±18.60µs 402.6±27.88µs +3.97%
RegExp Literal (Execution) 73.4±4.67µs 71.4±4.61µs +2.80%
RegExp Literal (Full) 343.4±21.67µs 344.4±24.62µs -0.29%
RegExp Literal Creation (Execution) 70.5±6.38µs 65.3±5.18µs +7.96%
RegExp Literal Creation (Full) 403.3±21.66µs 397.3±28.16µs +1.51%
Static Object Property Access (Execution) 4.8±0.39µs 4.5±0.32µs +6.67%
Static Object Property Access (Full) 273.1±22.74µs 265.6±17.17µs +2.82%
String Object Access (Execution) 7.3±0.49µs 6.6±0.65µs +10.61%
String Object Access (Full) 259.9±17.65µs 260.6±16.16µs -0.27%
String comparison (Execution) 6.7±0.53µs 5.9±0.38µs +13.56%
String comparison (Full) 277.0±16.38µs 260.5±19.03µs +6.33%
String concatenation (Execution) 5.8±0.28µs 4.9±0.32µs +18.37%
String concatenation (Full) 273.1±17.89µs 251.7±20.64µs +8.50%
String copy (Execution) 4.2±0.28µs 3.6±0.26µs +16.67%
String copy (Full) 260.9±15.19µs 238.1±20.97µs +9.58%
Symbols (Execution) 3.4±0.25µs 3.1±0.17µs +9.68%
Symbols (Full) 247.2±25.92µs 227.0±18.71µs +8.90%

@github-actions
Copy link

Benchmark for 591096b

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 329.3±18.10ns 329.6±19.94ns -0.09%
Arithmetic operations (Full) 244.9±15.56µs 231.2±14.10µs +5.93%
Array access (Execution) 7.8±0.41µs 7.9±0.49µs -1.27%
Array access (Full) 278.6±25.78µs 252.2±19.84µs +10.47%
Array creation (Execution) 2.9±0.10ms 3.2±0.11ms -9.38%
Array creation (Full) 3.1±0.12ms 3.2±0.16ms -3.13%
Array pop (Execution) 1061.1±89.83µs 1141.9±55.91µs -7.08%
Array pop (Full) 1385.6±62.42µs 1371.0±56.87µs +1.06%
Boolean Object Access (Execution) 4.9±0.28µs 4.1±0.24µs +19.51%
Boolean Object Access (Full) 256.0±19.29µs 243.8±20.61µs +5.00%
Create Realm 434.3±26.53ns 459.4±45.64ns -5.46%
Dynamic Object Property Access (Execution) 5.4±0.45µs 5.0±0.26µs +8.00%
Dynamic Object Property Access (Full) 263.2±13.79µs 235.4±13.39µs +11.81%
Expression (Lexer) 2.2±0.14µs 2.2±0.12µs 0.00%
Expression (Parser) 4.8±0.28µs 4.7±0.33µs +2.13%
Fibonacci (Execution) 841.6±37.07µs 893.1±45.11µs -5.77%
Fibonacci (Full) 1130.9±57.23µs 1151.4±53.98µs -1.78%
For loop (Execution) 21.1±1.32µs 20.9±1.57µs +0.96%
For loop (Full) 279.2±13.01µs 255.3±10.19µs +9.36%
For loop (Lexer) 4.7±0.26µs 4.6±0.21µs +2.17%
For loop (Parser) 13.1±0.78µs 13.5±0.94µs -2.96%
Goal Symbols (Parser) 7.8±0.48µs 7.9±0.51µs -1.27%
Hello World (Lexer) 793.2±54.18ns 771.5±51.82ns +2.81%
Hello World (Parser) 1973.4±98.07ns 1949.9±104.18ns +1.21%
Long file (Parser) 5.8±0.22ms 5.9±0.29ms -1.69%
Number Object Access (Execution) 3.9±0.17µs 3.2±0.18µs +21.87%
Number Object Access (Full) 256.1±17.59µs 239.2±18.09µs +7.07%
Object Creation (Execution) 4.3±0.26µs 4.4±0.27µs -2.27%
Object Creation (Full) 305.6±24.70µs 293.7±14.56µs +4.05%
RegExp (Execution) 65.8±4.62µs 61.6±3.44µs +6.82%
RegExp (Full) 404.0±33.14µs 377.6±15.77µs +6.99%
RegExp Literal (Execution) 68.0±4.57µs 65.0±2.79µs +4.62%
RegExp Literal (Full) 331.2±17.94µs 315.5±19.72µs +4.98%
RegExp Literal Creation (Execution) 65.0±4.22µs 63.8±3.65µs +1.88%
RegExp Literal Creation (Full) 389.9±20.44µs 375.1±20.83µs +3.95%
Static Object Property Access (Execution) 4.9±0.32µs 4.4±0.22µs +11.36%
Static Object Property Access (Full) 258.6±19.78µs 238.0±13.12µs +8.66%
String Object Access (Execution) 7.1±0.57µs 6.2±0.33µs +14.52%
String Object Access (Full) 253.6±12.35µs 243.9±13.46µs +3.98%
String comparison (Execution) 6.2±0.34µs 5.7±0.36µs +8.77%
String comparison (Full) 260.2±12.75µs 241.7±13.47µs +7.65%
String concatenation (Execution) 4.9±0.30µs 4.6±0.21µs +6.52%
String concatenation (Full) 255.9±17.80µs 233.6±11.38µs +9.55%
String copy (Execution) 3.8±0.29µs 3.4±0.25µs +11.76%
String copy (Full) 249.5±11.91µs 234.4±13.91µs +6.44%
Symbols (Execution) 3.1±0.17µs 2.9±0.14µs +6.90%
Symbols (Full) 234.0±12.36µs 213.3±12.38µs +9.70%

@HalidOdat
Copy link
Member Author

HalidOdat commented Aug 13, 2020

This is ready for review! :)

Hmmm. The benchmarks are not showing the correct results! I did a local benchmark and there was a very small regression in 3 benchmarks (+5%) that is because we did not account for Symbols at all before. but the majority have a 10% to 24% increase in speed. The github benchmarks ones are very unstable I got a 10% improvement on all benchmarks from a doc comment 😆 , unless the speed up is drastic it wont show in the github benchmarks.

What do you think? @Razican

@Razican
Copy link
Member

Razican commented Aug 13, 2020

This is ready for review! :)

Thanks! I will give this a look as soon as I can :)

Hmmm. The benchmarks are not showing the correct results! I did a local benchmark and there was a very small regression in 3 benchmarks (+5%) that is because we did not account for Symbols at all before. but the majority have a 10% to 24% increase in speed. The github benchmarks ones are very unstable I got a 10% improvement on all benchmarks from a doc comment laughing , unless the speed up is drastic it wont show in the github benchmarks.

What do you think? @Razican

Yep, we have to take the benchmarks with a grain of salt. I would say that if multiple benchmarks are showing the same, (which might be the case here), it might be because this is regressing in the particular case of the GitHub actions instance configuration. I will run the benchmarks locally just to make sure that there isn't something we are missing.

In any case, I think it's fine to have some performance regressions when we add new stuff. I expect some performance regressions when we implement things such as async/await.

@github-actions
Copy link

Benchmark for 7adeedd

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 381.8±25.79ns 372.5±14.29ns +2.50%
Arithmetic operations (Full) 286.5±17.37µs 258.8±7.94µs +10.70%
Array access (Execution) 9.2±0.40µs 8.8±0.29µs +4.55%
Array access (Full) 319.8±23.71µs 280.0±8.55µs +14.21%
Array creation (Execution) 3.5±0.06ms 3.3±0.08ms +6.06%
Array creation (Full) 3.9±0.10ms 3.7±0.10ms +5.41%
Array pop (Execution) 1238.2±47.15µs 1202.2±54.16µs +2.99%
Array pop (Full) 1648.0±44.48µs 1579.7±50.60µs +4.32%
Boolean Object Access (Execution) 5.5±0.16µs 4.4±0.25µs +25.00%
Boolean Object Access (Full) 298.0±14.36µs 274.2±13.41µs +8.68%
Create Realm 497.6±20.27ns 501.2±19.81ns -0.72%
Dynamic Object Property Access (Execution) 6.0±0.19µs 5.5±0.16µs +9.09%
Dynamic Object Property Access (Full) 303.2±8.89µs 268.9±10.89µs +12.76%
Expression (Lexer) 2.6±0.21µs 2.5±0.12µs +4.00%
Expression (Parser) 5.8±0.25µs 5.6±0.44µs +3.57%
Fibonacci (Execution) 979.6±31.44µs 990.5±31.77µs -1.10%
Fibonacci (Full) 1324.7±77.99µs 1314.8±50.61µs +0.75%
For loop (Execution) 24.6±0.71µs 23.7±0.84µs +3.80%
For loop (Full) 321.3±11.53µs 298.0±13.31µs +7.82%
For loop (Lexer) 5.5±0.16µs 5.4±0.31µs +1.85%
For loop (Parser) 15.3±0.58µs 15.0±0.86µs +2.00%
Goal Symbols (Parser) 8.7±0.25µs 8.8±0.29µs -1.14%
Hello World (Lexer) 909.4±30.12ns 872.4±40.89ns +4.24%
Hello World (Parser) 2.3±0.16µs 2.2±0.09µs +4.55%
Long file (Parser) 6.9±0.16ms 6.7±0.15ms +2.99%
Number Object Access (Execution) 4.4±0.11µs 3.7±0.19µs +18.92%
Number Object Access (Full) 291.8±13.48µs 264.1±7.65µs +10.49%
Object Creation (Execution) 5.1±0.21µs 4.5±0.16µs +13.33%
Object Creation (Full) 360.5±23.48µs 321.5±13.80µs +12.13%
RegExp (Execution) 74.3±2.89µs 72.5±3.89µs +2.48%
RegExp (Full) 449.6±17.58µs 424.3±16.88µs +5.96%
RegExp Literal (Execution) 78.1±3.19µs 76.6±4.26µs +1.96%
RegExp Literal (Full) 381.0±20.81µs 362.8±21.88µs +5.02%
RegExp Literal Creation (Execution) 74.8±3.52µs 72.9±3.50µs +2.61%
RegExp Literal Creation (Full) 449.4±14.20µs 420.2±19.72µs +6.95%
Static Object Property Access (Execution) 5.5±0.25µs 4.9±0.20µs +12.24%
Static Object Property Access (Full) 295.5±11.39µs 269.4±7.67µs +9.69%
String Object Access (Execution) 7.9±0.43µs 6.8±0.29µs +16.18%
String Object Access (Full) 293.4±13.12µs 275.2±9.38µs +6.61%
String comparison (Execution) 7.0±0.25µs 6.3±0.22µs +11.11%
String comparison (Full) 297.7±9.46µs 269.4±10.12µs +10.50%
String concatenation (Execution) 5.6±0.16µs 5.2±0.37µs +7.69%
String concatenation (Full) 288.4±10.04µs 266.6±8.52µs +8.18%
String copy (Execution) 4.4±0.19µs 3.9±0.19µs +12.82%
String copy (Full) 285.4±10.00µs 266.9±11.63µs +6.93%
Symbols (Execution) 3.5±0.24µs 3.1±0.07µs +12.90%
Symbols (Full) 265.6±16.26µs 250.9±14.07µs +5.86%

@github-actions
Copy link

Benchmark for 4d21eb2

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 356.7±17.96ns 402.4±15.41ns -11.36%
Arithmetic operations (Full) 259.2±8.68µs 251.8±14.36µs +2.94%
Array access (Execution) 8.6±0.27µs 8.5±0.30µs +1.18%
Array access (Full) 285.3±14.41µs 269.4±15.45µs +5.90%
Array creation (Execution) 3.2±0.11ms 3.2±0.16ms 0.00%
Array creation (Full) 3.5±0.15ms 3.6±0.12ms -2.78%
Array pop (Execution) 1136.3±41.80µs 1173.2±52.32µs -3.15%
Array pop (Full) 1496.4±71.02µs 1577.4±73.27µs -5.14%
Boolean Object Access (Execution) 5.0±0.17µs 4.2±0.16µs +19.05%
Boolean Object Access (Full) 289.1±9.80µs 268.1±19.21µs +7.83%
Create Realm 471.9±22.32ns 449.1±17.60ns +5.08%
Dynamic Object Property Access (Execution) 5.6±0.24µs 5.4±0.22µs +3.70%
Dynamic Object Property Access (Full) 281.9±13.82µs 264.9±16.51µs +6.42%
Expression (Lexer) 2.4±0.19µs 2.4±0.15µs 0.00%
Expression (Parser) 5.2±0.33µs 5.4±0.22µs -3.70%
Fibonacci (Execution) 920.9±35.20µs 940.4±29.58µs -2.07%
Fibonacci (Full) 1203.2±53.29µs 1261.4±250.89µs -4.61%
For loop (Execution) 22.7±1.09µs 22.3±0.84µs +1.79%
For loop (Full) 297.3±15.32µs 279.0±13.40µs +6.56%
For loop (Lexer) 5.1±0.21µs 5.4±0.25µs -5.56%
For loop (Parser) 14.6±0.92µs 14.5±0.70µs +0.69%
Goal Symbols (Parser) 8.6±0.36µs 8.6±0.55µs 0.00%
Hello World (Lexer) 833.3±45.03ns 883.0±60.19ns -5.63%
Hello World (Parser) 2.1±0.09µs 2.2±0.19µs -4.55%
Long file (Parser) 6.7±0.25ms 6.5±0.17ms +3.08%
Number Object Access (Execution) 4.0±0.29µs 3.4±0.27µs +17.65%
Number Object Access (Full) 277.1±10.84µs 259.5±10.78µs +6.78%
Object Creation (Execution) 4.8±0.26µs 4.6±0.19µs +4.35%
Object Creation (Full) 319.4±13.49µs 326.1±16.05µs -2.05%
RegExp (Execution) 70.4±2.52µs 66.8±3.09µs +5.39%
RegExp (Full) 429.1±25.78µs 416.1±16.41µs +3.12%
RegExp Literal (Execution) 74.0±3.07µs 73.0±4.49µs +1.37%
RegExp Literal (Full) 351.7±17.83µs 342.6±15.89µs +2.66%
RegExp Literal Creation (Execution) 68.6±3.95µs 67.7±2.93µs +1.33%
RegExp Literal Creation (Full) 418.7±15.17µs 412.3±22.83µs +1.55%
Static Object Property Access (Execution) 5.1±0.32µs 5.0±0.26µs +2.00%
Static Object Property Access (Full) 269.6±9.69µs 263.1±17.44µs +2.47%
String Object Access (Execution) 7.3±0.41µs 6.5±0.26µs +12.31%
String Object Access (Full) 284.0±11.93µs 264.7±8.26µs +7.29%
String comparison (Execution) 6.5±0.26µs 6.1±0.25µs +6.56%
String comparison (Full) 287.0±11.73µs 264.6±13.61µs +8.47%
String concatenation (Execution) 5.3±0.23µs 5.0±0.24µs +6.00%
String concatenation (Full) 278.1±19.17µs 260.8±12.95µs +6.63%
String copy (Execution) 4.0±0.19µs 3.6±0.19µs +11.11%
String copy (Full) 278.8±16.81µs 257.9±15.51µs +8.10%
Symbols (Execution) 3.4±0.13µs 3.0±0.15µs +13.33%
Symbols (Full) 249.7±11.72µs 235.8±13.34µs +5.89%

@github-actions
Copy link

Benchmark for 3d77573

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 325.9±18.56ns 321.4±25.91ns +1.40%
Arithmetic operations (Full) 220.7±26.83µs 236.5±19.10µs -6.68%
Array access (Execution) 6.8±0.24µs 7.0±0.27µs -2.86%
Array access (Full) 227.0±10.10µs 220.8±11.19µs +2.81%
Array creation (Execution) 2.9±0.11ms 3.0±0.14ms -3.33%
Array creation (Full) 3.3±0.11ms 3.4±0.17ms -2.94%
Array pop (Execution) 1025.6±60.80µs 1086.3±52.27µs -5.59%
Array pop (Full) 1390.0±35.59µs 1559.6±53.39µs -10.87%
Boolean Object Access (Execution) 4.0±0.22µs 3.6±0.15µs +11.11%
Boolean Object Access (Full) 225.5±15.14µs 244.1±19.78µs -7.62%
Create Realm 396.5±28.25ns 385.8±20.56ns +2.77%
Dynamic Object Property Access (Execution) 4.4±0.19µs 4.5±0.16µs -2.22%
Dynamic Object Property Access (Full) 219.1±7.89µs 258.1±62.97µs -15.11%
Expression (Lexer) 2.1±0.12µs 2.3±0.11µs -8.70%
Expression (Parser) 4.7±0.23µs 5.2±0.15µs -9.62%
Fibonacci (Execution) 688.2±29.69µs 751.3±36.15µs -8.40%
Fibonacci (Full) 931.6±28.30µs 1005.5±51.21µs -7.35%
For loop (Execution) 19.0±0.77µs 18.8±0.80µs +1.06%
For loop (Full) 238.3±11.76µs 231.3±7.53µs +3.03%
For loop (Lexer) 4.6±0.26µs 5.2±0.20µs -11.54%
For loop (Parser) 12.0±0.53µs 13.6±0.42µs -11.76%
Goal Symbols (Parser) 7.2±0.39µs 8.3±0.53µs -13.25%
Hello World (Lexer) 703.9±27.60ns 816.3±58.01ns -13.77%
Hello World (Parser) 1867.6±90.01ns 2.1±0.07µs -11.07%
Long file (Parser) 5.4±0.14ms 6.1±0.18ms -11.48%
Number Object Access (Execution) 3.3±0.20µs 2.9±0.12µs +13.79%
Number Object Access (Full) 219.2±8.13µs 243.9±7.62µs -10.13%
Object Creation (Execution) 3.6±0.15µs 3.7±0.15µs -2.70%
Object Creation (Full) 263.2±10.40µs 290.6±15.08µs -9.43%
RegExp (Execution) 56.2±2.95µs 58.0±3.22µs -3.10%
RegExp (Full) 354.6±21.26µs 395.5±47.64µs -10.34%
RegExp Literal (Execution) 59.7±3.55µs 59.9±3.66µs -0.33%
RegExp Literal (Full) 286.8±12.21µs 309.9±14.06µs -7.45%
RegExp Literal Creation (Execution) 56.5±4.07µs 56.4±1.96µs +0.18%
RegExp Literal Creation (Full) 353.3±30.87µs 357.3±24.77µs -1.12%
Static Object Property Access (Execution) 3.8±0.14µs 3.9±0.19µs -2.56%
Static Object Property Access (Full) 217.9±7.96µs 232.7±12.39µs -6.36%
String Object Access (Execution) 5.8±0.23µs 5.4±0.18µs +7.41%
String Object Access (Full) 223.6±10.93µs 245.7±16.29µs -8.99%
String comparison (Execution) 5.2±0.18µs 5.0±0.20µs +4.00%
String comparison (Full) 225.1±10.67µs 231.9±10.64µs -2.93%
String concatenation (Execution) 4.2±0.18µs 4.0±0.14µs +5.00%
String concatenation (Full) 219.6±9.81µs 216.5±25.01µs +1.43%
String copy (Execution) 3.0±0.10µs 3.0±0.12µs 0.00%
String copy (Full) 219.1±12.87µs 235.7±11.27µs -7.04%
Symbols (Execution) 2.5±0.09µs 2.5±0.13µs 0.00%
Symbols (Full) 200.7±10.57µs 200.8±11.85µs -0.05%

@HalidOdat HalidOdat requested a review from Lan2u August 18, 2020 19:52
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.

Looks pretty good, thanks! I finally had time to do a proper review of the whole code, and found some things that could be improved, or that need a bit of explanation (to me).

boa/src/builtins/array/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/json/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/object/internal_methods.rs Outdated Show resolved Hide resolved
boa/src/builtins/object/internal_methods.rs Outdated Show resolved Hide resolved
boa/src/builtins/json/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/property/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/symbol/mod.rs Show resolved Hide resolved
boa/src/builtins/value/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/value/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/value/mod.rs Outdated Show resolved Hide resolved
@HalidOdat HalidOdat requested a review from Razican August 19, 2020 15:14
@github-actions
Copy link

Benchmark for 5616890

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 454.4±33.33ns 408.3±61.84ns +11.29%
Arithmetic operations (Full) 265.2±33.62µs 265.1±25.07µs +0.04%
Array access (Execution) 9.5±0.70µs 9.4±0.77µs +1.06%
Array access (Full) 291.5±24.66µs 278.8±27.43µs +4.56%
Array creation (Execution) 3.6±0.19ms 3.6±0.20ms 0.00%
Array creation (Full) 4.0±0.23ms 3.9±0.24ms +2.56%
Array pop (Execution) 1257.7±76.15µs 1221.9±78.58µs +2.93%
Array pop (Full) 1700.9±77.91µs 1655.3±96.52µs +2.75%
Boolean Object Access (Execution) 5.1±0.43µs 4.9±0.25µs +4.08%
Boolean Object Access (Full) 292.8±16.74µs 278.1±27.34µs +5.29%
Create Realm 520.7±37.11ns 487.5±32.70ns +6.81%
Dynamic Object Property Access (Execution) 6.2±0.37µs 6.3±0.70µs -1.59%
Dynamic Object Property Access (Full) 305.0±17.43µs 295.9±15.44µs +3.08%
Expression (Lexer) 2.6±0.19µs 2.6±0.16µs 0.00%
Expression (Parser) 5.5±0.50µs 5.8±0.31µs -5.17%
Fibonacci (Execution) 999.9±42.53µs 1042.4±86.28µs -4.08%
Fibonacci (Full) 1285.4±72.14µs 1386.0±58.15µs -7.26%
For loop (Execution) 25.5±1.69µs 25.5±2.16µs 0.00%
For loop (Full) 325.7±17.55µs 297.2±28.52µs +9.59%
For loop (Lexer) 5.7±0.28µs 5.6±0.40µs +1.79%
For loop (Parser) 14.9±1.35µs 15.0±1.22µs -0.67%
Goal Symbols (Parser) 9.7±0.52µs 9.6±0.49µs +1.04%
Hello World (Lexer) 900.3±77.47ns 961.2±90.19ns -6.34%
Hello World (Parser) 2.3±0.19µs 2.3±0.22µs 0.00%
Long file (Parser) 7.1±0.31ms 7.0±0.39ms +1.43%
Number Object Access (Execution) 4.4±0.38µs 3.9±0.21µs +12.82%
Number Object Access (Full) 279.2±28.11µs 284.3±13.90µs -1.79%
Object Creation (Execution) 5.1±0.44µs 5.0±0.44µs +2.00%
Object Creation (Full) 337.4±36.10µs 353.5±57.53µs -4.55%
RegExp (Execution) 78.4±5.56µs 77.0±6.50µs +1.82%
RegExp (Full) 464.4±32.61µs 465.3±33.17µs -0.19%
RegExp Literal (Execution) 80.6±3.66µs 79.6±6.25µs +1.26%
RegExp Literal (Full) 378.5±23.52µs 369.9±21.10µs +2.32%
RegExp Literal Creation (Execution) 76.2±3.38µs 79.0±21.91µs -3.54%
RegExp Literal Creation (Full) 459.7±25.63µs 440.6±24.65µs +4.33%
Static Object Property Access (Execution) 5.4±0.27µs 5.5±0.30µs -1.82%
Static Object Property Access (Full) 298.5±17.77µs 293.0±17.98µs +1.88%
String Object Access (Execution) 8.1±0.59µs 7.4±0.35µs +9.46%
String Object Access (Full) 295.3±12.72µs 293.2±23.14µs +0.72%
String comparison (Execution) 7.1±0.37µs 6.8±0.38µs +4.41%
String comparison (Full) 280.3±27.64µs 291.1±17.83µs -3.71%
String concatenation (Execution) 5.7±0.34µs 5.5±0.40µs +3.64%
String concatenation (Full) 298.3±21.89µs 284.8±23.20µs +4.74%
String copy (Execution) 4.1±0.20µs 4.1±0.20µs 0.00%
String copy (Full) 294.8±15.07µs 278.4±16.03µs +5.89%
Symbols (Execution) 3.5±0.21µs 3.3±0.24µs +6.06%
Symbols (Full) 271.7±25.24µs 266.3±46.32µs +2.03%

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.

Let's merge!

@Razican Razican merged commit b42dd4c into master Aug 19, 2020
@HalidOdat HalidOdat deleted the index-property-key branch August 19, 2020 20:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request memory PRs and Issues related to the memory management or memory footprint. performance Performance related changes and issues
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Symbol Indexing Object iterators
3 participants