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

Implement static shapes #2859

Closed
wants to merge 15 commits into from
Closed

Implement static shapes #2859

wants to merge 15 commits into from

Conversation

HalidOdat
Copy link
Member

@HalidOdat HalidOdat commented Apr 23, 2023

Depends on #2723

This Pull Request fixes/closes #2813 .

This PR is currently a WIP that implements #2813 , It currently only is applied to JSON builtin object (because it has less properties, so easier to test with). is applied to some all builtins objects.

This points to #2723 for easier review, will make it point to main one #2723 is merged!

Main changes:

  • Added the boa_builtins crate that generates and stores the static shapes (this is done because phf! macro does not work with custom enums). Maybe this is a good opportunity to try to split builtins from boa_engine crate to reduce compilation times.
  • Because we store the shape in a static that can be shared across realms (and threads). I had to put the prototype in storage properties at len() - 1 (last property), could also store it in the first but it would make Direct array length access #2796 a bit harder and when converting to unique on shape change we would have to shift the storage elements instead of a single pop (will have to do further research on what would be the best choice)
  • When creating the object storage pre-allocate exact storage (to avoid Vec realloc)

Using the debug object we can see that the static shape of JSON object is shared between Realms.

$boa.shape.type(JSON) // "static"

// All initial JSON builtins share the static shape
let otherRealmJSON = $boa.realm.create()
$boa.shape.id(JSON) === $boa.shape.id(otherRealmJSON) // true

This may be a good way to identify if a global builtin object has been modified, which could allow us some interesting optimizations in some cases.

TODO:

  • Operations
    • Property Lookup
    • Implement property insertion (convert to unique)
    • Implement property deletion (convert to unique)
    • Implement attribute change (convert to unique)
    • Implement prototype change (convert to unique)
    • Optimize operations
  • Add documentation
  • Add to builtin objects (eliminated 188 unique shapes per realm, replaced with reusable static shapes)
    • JSON (1)
    • Math (1)
    • Reflect (1)
    • Object (2, constructor, prototype )
    • Array (2, constructor, prototype )
    • Function (2, constructor, prototype )
    • Date (2, constructor, prototype )
    • Number (2, constructor, prototype )
    • Boolean (2, constructor, prototype )
    • BigInt (2, constructor, prototype )
    • Symbol (2, constructor, prototype )
    • String (2, constructor, prototype )
    • RegExp (2, constructor, prototype )
    • Symbol (2, constructor, prototype )
    • Error (2, constructor, prototype )
    • NativeErrors (Type, Reference, Syntax, Aggreagate, Range, Uri, Eval ) (14, constructor, prototype ) - Share the same NATIVE_ERROR static shape
    • Set (2, constructor, prototype )
    • Map (2, constructor, prototype )
    • ...

@HalidOdat HalidOdat added performance Performance related changes and issues builtins PRs and Issues related to builtins/intrinsics execution Issues or PRs related to code execution labels Apr 23, 2023
@HalidOdat HalidOdat changed the base branch from main to optimization/object-shapes April 23, 2023 01:26
@github-actions
Copy link

github-actions bot commented Apr 23, 2023

Test262 conformance changes

Test result main count PR count difference
Total 94,118 94,118 0
Passed 74,620 74,620 0
Ignored 17,750 17,750 0
Failed 1,748 1,748 0
Panics 0 0 0
Conformance 79.28% 79.28% 0.00%

@codecov
Copy link

codecov bot commented Apr 23, 2023

Codecov Report

Merging #2859 (4fd6f08) into main (44ef49e) will decrease coverage by 0.37%.
The diff coverage is 86.04%.

@@            Coverage Diff             @@
##             main    #2859      +/-   ##
==========================================
- Coverage   50.05%   49.69%   -0.37%     
==========================================
  Files         446      449       +3     
  Lines       45975    46081     +106     
==========================================
- Hits        23015    22899     -116     
- Misses      22960    23182     +222     
Impacted Files Coverage Δ
boa_builtins/build.rs 0.00% <0.00%> (ø)
boa_cli/src/debug/shape.rs 0.00% <0.00%> (ø)
boa_engine/src/object/shape/slot.rs 74.07% <ø> (ø)
boa_engine/src/object/shape/unique_shape.rs 18.08% <ø> (-8.72%) ⬇️
boa_engine/src/string/common.rs 97.29% <ø> (ø)
boa_engine/src/symbol.rs 90.80% <ø> (ø)
boa_engine/src/value/mod.rs 64.92% <ø> (-0.09%) ⬇️
boa_engine/src/object/property_map.rs 68.36% <44.44%> (-1.80%) ⬇️
boa_engine/src/object/shape/static_shape.rs 64.15% <64.15%> (ø)
boa_engine/src/object/shape/mod.rs 77.02% <66.66%> (-3.93%) ⬇️
... and 64 more

... and 3 files with indirect coverage changes

@bors bors bot changed the base branch from optimization/object-shapes to main April 26, 2023 05:42
@HalidOdat HalidOdat added the run-benchmark Label used to run banchmarks on PRs label Apr 27, 2023
@github-actions
Copy link

Benchmark for eccfcb7

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 745.6±1556.71ns 762.7±1629.10ns +2.29%
Arithmetic operations (Execution) 460.2±0.20ns 457.7±0.23ns -0.54%
Arithmetic operations (Parser) 7.1±0.03µs 7.2±0.01µs +1.41%
Array access (Compiler) 1889.5±3440.26ns 2.5±5.85µs +32.31%
Array access (Execution) 8.3±15.80µs 7.2±7.91µs -13.25%
Array access (Parser) 13.6±0.03µs 14.0±0.04µs +2.94%
Array creation (Compiler) 2.8±4.57µs 2.9±5.05µs +3.57%
Array creation (Execution) 922.9±1519.03µs 976.5±2019.89µs +5.81%
Array creation (Parser) 16.7±0.03µs 16.6±0.02µs -0.60%
Array pop (Compiler) 5.4±7.97µs 5.1±5.84µs -5.56%
Array pop (Execution) 708.8±860.69µs 745.6±1120.98µs +5.19%
Array pop (Parser) 149.6±0.22µs 153.1±0.35µs +2.34%
Boolean Object Access (Compiler) 1442.9±1723.48ns 1409.4±1673.40ns -2.32%
Boolean Object Access (Execution) 6.2±6.30µs 7.4±17.64µs +19.35%
Boolean Object Access (Parser) 15.5±0.03µs 15.7±0.02µs +1.29%
Clean js (Compiler) 6.3±10.43µs 6.2±10.19µs -1.59%
Clean js (Execution) 905.6±414.62µs 946.1±638.77µs +4.47%
Clean js (Parser) 35.3±0.04µs 35.1±0.04µs -0.57%
Create Realm 639.3±1884.65µs 623.0±1983.66µs -2.55%
Dynamic Object Property Access (Compiler) 2.8±6.49µs 3.0±7.71µs +7.14%
Dynamic Object Property Access (Execution) 4.3±6.42µs 4.4±7.18µs +2.33%
Dynamic Object Property Access (Parser) 12.7±0.03µs 12.5±0.05µs -1.57%
Fibonacci (Compiler) 4.1±6.55µs 4.1±6.95µs 0.00%
Fibonacci (Execution) 921.2±1398.30µs 930.7±1354.38µs +1.03%
Fibonacci (Parser) 19.4±0.05µs 19.6±0.02µs +1.03%
For loop (Compiler) 3.5±4.55µs 3.0±4.54µs -14.29%
For loop (Execution) 20.6±35.50µs 20.5±33.30µs -0.49%
For loop (Parser) 17.5±0.02µs 17.5±0.02µs 0.00%
Mini js (Compiler) 6.3±11.68µs 6.6±12.50µs +4.76%
Mini js (Execution) 825.3±13.18µs 840.2±3.52µs +1.81%
Mini js (Parser) 30.9±0.06µs 31.2±0.05µs +0.97%
Number Object Access (Compiler) 1322.8±1739.38ns 1468.0±1864.97ns +10.98%
Number Object Access (Execution) 4.7±5.06µs 4.8±4.87µs +2.13%
Number Object Access (Parser) 12.5±0.01µs 12.5±0.07µs 0.00%
Object Creation (Compiler) 1869.6±2985.27ns 2.2±4.07µs +17.67%
Object Creation (Execution) 4.1±6.74µs 4.1±6.63µs 0.00%
Object Creation (Parser) 10.9±0.02µs 10.8±0.13µs -0.92%
RegExp (Compiler) 2.5±4.55µs 2.8±6.40µs +12.00%
RegExp (Execution) 13.3±13.56µs 14.2±21.81µs +6.77%
RegExp (Parser) 11.9±0.06µs 11.6±0.06µs -2.52%
RegExp Creation (Compiler) 2.7±7.17µs 2.1±3.26µs -22.22%
RegExp Creation (Execution) 9.7±15.66µs 8.8±8.42µs -9.28%
RegExp Creation (Parser) 9.9±0.03µs 9.8±0.02µs -1.01%
RegExp Literal (Compiler) 2.6±3.91µs 2.4±3.66µs -7.69%
RegExp Literal (Execution) 14.1±21.44µs 12.4±8.45µs -12.06%
RegExp Literal (Parser) 13.1±0.03µs 13.0±0.02µs -0.76%
RegExp Literal Creation (Compiler) 2.4±5.34µs 4.1±21.43µs +70.83%
RegExp Literal Creation (Execution) 8.9±9.07µs 9.2±11.90µs +3.37%
RegExp Literal Creation (Parser) 10.9±0.02µs 10.8±0.02µs -0.92%
Static Object Property Access (Compiler) 2.2±4.36µs 2.7±5.98µs +22.73%
Static Object Property Access (Execution) 4.3±6.69µs 4.3±7.01µs 0.00%
Static Object Property Access (Parser) 11.6±0.01µs 11.5±0.02µs -0.86%
String Object Access (Compiler) 1605.1±1731.76ns 1642.7±1774.69ns +2.34%
String Object Access (Execution) 7.7±7.21µs 8.2±6.41µs +6.49%
String Object Access (Parser) 15.3±0.04µs 15.5±0.02µs +1.31%
String comparison (Compiler) 3.4±4.58µs 3.5±5.58µs +2.94%
String comparison (Execution) 3.7±5.23µs 3.8±5.36µs +2.70%
String comparison (Parser) 13.9±0.02µs 13.7±0.02µs -1.44%
String concatenation (Compiler) 3.6±10.59µs 2.9±5.04µs -19.44%
String concatenation (Execution) 3.4±5.42µs 3.4±5.25µs 0.00%
String concatenation (Parser) 9.5±0.02µs 9.3±0.02µs -2.11%
String copy (Compiler) 2.4±5.95µs 2.5±6.07µs +4.17%
String copy (Execution) 4.1±11.81µs 3.0±4.65µs -26.83%
String copy (Parser) 7.0±0.02µs 6.9±0.01µs -1.43%
Symbols (Compiler) 1799.9±4210.44ns 1805.9±4249.07ns +0.33%
Symbols (Execution) 3.2±5.29µs 3.2±5.22µs 0.00%
Symbols (Parser) 5.2±0.01µs 5.2±0.02µs 0.00%

@github-actions
Copy link

Benchmark for e827a78

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 602.3±829.18ns 546.3±557.23ns -9.30%
Arithmetic operations (Execution) 482.2±0.27ns 464.6±0.34ns -3.65%
Arithmetic operations (Parser) 7.4±0.02µs 7.7±0.19µs +4.05%
Array access (Compiler) 1735.5±2273.72ns 1955.7±3130.91ns +12.69%
Array access (Execution) 7.5±7.60µs 7.6±10.33µs +1.33%
Array access (Parser) 14.5±0.04µs 15.0±0.10µs +3.45%
Array creation (Compiler) 3.2±4.54µs 2.8±2.35µs -12.50%
Array creation (Execution) 800.4±371.96µs 774.3±278.63µs -3.26%
Array creation (Parser) 17.4±0.04µs 17.7±0.05µs +1.72%
Array pop (Compiler) 4.7±6.09µs 4.0±2.40µs -14.89%
Array pop (Execution) 693.5±13.71µs 714.0±6.42µs +2.96%
Array pop (Parser) 160.0±0.14µs 163.6±0.34µs +2.25%
Boolean Object Access (Compiler) 1536.5±2663.21ns 1492.5±2264.88ns -2.86%
Boolean Object Access (Execution) 6.6±5.95µs 6.2±3.78µs -6.06%
Boolean Object Access (Parser) 16.1±0.19µs 17.3±0.64µs +7.45%
Clean js (Compiler) 5.9±5.62µs 6.0±6.37µs +1.69%
Clean js (Execution) 928.9±17.55µs 939.6±17.34µs +1.15%
Clean js (Parser) 36.9±0.06µs 37.1±0.08µs +0.54%
Create Realm 501.7±961.25µs 561.3±1802.77µs +11.88%
Dynamic Object Property Access (Compiler) 2.4±3.01µs 2.2±3.21µs -8.33%
Dynamic Object Property Access (Execution) 4.2±4.82µs 4.1±4.70µs -2.38%
Dynamic Object Property Access (Parser) 13.0±0.03µs 13.1±0.04µs +0.77%
Fibonacci (Compiler) 4.3±7.12µs 3.5±3.63µs -18.60%
Fibonacci (Execution) 969.4±929.70µs 877.9±618.62µs -9.44%
Fibonacci (Parser) 20.3±0.03µs 20.8±0.11µs +2.46%
For loop (Compiler) 3.2±3.38µs 3.3±4.58µs +3.12%
For loop (Execution) 18.6±17.03µs 19.0±21.65µs +2.15%
For loop (Parser) 18.5±0.05µs 18.6±0.05µs +0.54%
Mini js (Compiler) 6.1±10.61µs 5.1±4.17µs -16.39%
Mini js (Execution) 902.5±3.19µs 900.0±4.68µs -0.28%
Mini js (Parser) 32.6±0.11µs 32.7±0.08µs +0.31%
Number Object Access (Compiler) 1304.9±1657.22ns 1476.9±3645.00ns +13.18%
Number Object Access (Execution) 4.9±4.60µs 4.7±3.44µs -4.08%
Number Object Access (Parser) 12.9±0.02µs 13.0±0.05µs +0.78%
Object Creation (Compiler) 2.3±3.80µs 1901.2±2491.13ns -17.34%
Object Creation (Execution) 3.8±4.13µs 4.2±7.86µs +10.53%
Object Creation (Parser) 11.2±0.03µs 11.4±0.03µs +1.79%
RegExp (Compiler) 3.0±7.53µs 2.4±3.71µs -20.00%
RegExp (Execution) 12.6±7.14µs 15.6±36.54µs +23.81%
RegExp (Parser) 12.2±0.04µs 12.3±0.05µs +0.82%
RegExp Creation (Compiler) 2.2±3.19µs 1908.1±2467.46ns -13.27%
RegExp Creation (Execution) 9.0±8.19µs 8.5±6.00µs -5.56%
RegExp Creation (Parser) 10.1±0.03µs 10.3±0.04µs +1.98%
RegExp Literal (Compiler) 2.4±2.53µs 2.6±5.18µs +8.33%
RegExp Literal (Execution) 13.2±10.58µs 11.9±5.16µs -9.85%
RegExp Literal (Parser) 13.6±0.03µs 13.7±0.03µs +0.74%
RegExp Literal Creation (Compiler) 2.2±3.09µs 1991.7±2512.04ns -9.47%
RegExp Literal Creation (Execution) 9.8±15.51µs 8.4±5.03µs -14.29%
RegExp Literal Creation (Parser) 11.4±0.02µs 11.6±0.18µs +1.75%
Static Object Property Access (Compiler) 1908.6±2367.98ns 2.1±2.46µs +10.03%
Static Object Property Access (Execution) 4.2±5.85µs 4.3±6.52µs +2.38%
Static Object Property Access (Parser) 11.9±0.03µs 12.2±0.08µs +2.52%
String Object Access (Compiler) 1724.8±2239.59ns 1580.8±1390.75ns -8.35%
String Object Access (Execution) 7.9±6.30µs 8.5±9.45µs +7.59%
String Object Access (Parser) 16.1±0.03µs 17.5±0.75µs +8.70%
String comparison (Compiler) 3.5±4.62µs 2.9±2.50µs -17.14%
String comparison (Execution) 3.9±5.81µs 3.5±3.90µs -10.26%
String comparison (Parser) 14.6±0.03µs 14.9±0.13µs +2.05%
String concatenation (Compiler) 3.3±9.95µs 2.7±4.36µs -18.18%
String concatenation (Execution) 3.3±4.34µs 2.8±3.02µs -15.15%
String concatenation (Parser) 9.9±0.41µs 10.1±0.02µs +2.02%
String copy (Compiler) 1813.8±2314.50ns 1868.2±2047.22ns +3.00%
String copy (Execution) 2.7±3.37µs 2.9±3.82µs +7.41%
String copy (Parser) 7.5±0.02µs 7.6±0.02µs +1.33%
Symbols (Compiler) 1582.4±2571.34ns 1332.7±1707.71ns -15.78%
Symbols (Execution) 3.1±4.41µs 3.0±3.71µs -3.23%
Symbols (Parser) 5.5±0.03µs 5.6±0.02µs +1.82%

@github-actions
Copy link

Benchmark for adb6db9

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 655.3±1251.11ns 706.3±1659.14ns +7.78%
Arithmetic operations (Execution) 457.3±0.32ns 455.4±0.27ns -0.42%
Arithmetic operations (Parser) 7.1±0.01µs 7.3±0.01µs +2.82%
Array access (Compiler) 2.3±5.40µs 1939.9±3512.98ns -15.66%
Array access (Execution) 10.0±32.40µs 8.1±12.07µs -19.00%
Array access (Parser) 13.8±0.02µs 13.9±0.06µs +0.72%
Array creation (Compiler) 2.7±4.63µs 2.8±4.28µs +3.70%
Array creation (Execution) 789.7±548.07µs 815.2±782.74µs +3.23%
Array creation (Parser) 16.7±0.03µs 16.5±0.03µs -1.20%
Array pop (Compiler) 7.7±30.23µs 5.3±7.02µs -31.17%
Array pop (Execution) 808.2±1871.27µs 648.0±2.41µs -19.82%
Array pop (Parser) 149.6±0.16µs 153.6±0.19µs +2.67%
Boolean Object Access (Compiler) 1334.6±1343.00ns 1557.8±2666.20ns +16.72%
Boolean Object Access (Execution) 5.7±4.75µs 6.7±8.93µs +17.54%
Boolean Object Access (Parser) 15.3±0.02µs 15.6±0.02µs +1.96%
Clean js (Compiler) 6.5±10.07µs 7.0±10.14µs +7.69%
Clean js (Execution) 959.4±951.06µs 894.3±85.81µs -6.79%
Clean js (Parser) 35.1±0.07µs 35.4±0.05µs +0.85%
Create Realm 669.6±2036.12µs 506.9±1617.42µs -24.30%
Dynamic Object Property Access (Compiler) 4.9±26.22µs 2.7±6.30µs -44.90%
Dynamic Object Property Access (Execution) 10.9±69.23µs 5.0±10.17µs -54.13%
Dynamic Object Property Access (Parser) 12.7±0.03µs 12.4±0.02µs -2.36%
Fibonacci (Compiler) 5.5±17.16µs 4.2±7.19µs -23.64%
Fibonacci (Execution) 945.8±1560.37µs 925.6±1251.11µs -2.14%
Fibonacci (Parser) 19.4±0.04µs 19.5±0.03µs +0.52%
For loop (Compiler) 5.3±20.79µs 3.4±5.27µs -35.85%
For loop (Execution) 20.5±34.01µs 20.2±31.31µs -1.46%
For loop (Parser) 17.7±0.02µs 17.5±0.04µs -1.13%
Mini js (Compiler) 6.2±9.56µs 6.2±8.33µs 0.00%
Mini js (Execution) 880.5±546.35µs 849.3±2.93µs -3.54%
Mini js (Parser) 31.3±0.10µs 31.3±0.03µs 0.00%
Number Object Access (Compiler) 1463.6±1751.62ns 1341.0±1282.99ns -8.38%
Number Object Access (Execution) 4.8±5.32µs 4.6±4.52µs -4.17%
Number Object Access (Parser) 12.4±0.01µs 12.6±0.02µs +1.61%
Object Creation (Compiler) 2.7±5.88µs 4.6±26.48µs +70.37%
Object Creation (Execution) 4.3±7.43µs 5.2±15.24µs +20.93%
Object Creation (Parser) 10.9±0.02µs 10.8±0.01µs -0.92%
RegExp (Compiler) 2.9±7.03µs 2.4±3.27µs -17.24%
RegExp (Execution) 13.0±13.41µs 13.8±13.50µs +6.15%
RegExp (Parser) 11.9±0.03µs 11.8±0.02µs -0.84%
RegExp Creation (Compiler) 2.2±3.73µs 2.1±4.71µs -4.55%
RegExp Creation (Execution) 8.2±6.61µs 9.4±9.20µs +14.63%
RegExp Creation (Parser) 9.9±0.03µs 9.9±0.02µs 0.00%
RegExp Literal (Compiler) 2.4±4.42µs 2.1±3.72µs -12.50%
RegExp Literal (Execution) 11.8±8.66µs 12.6±8.42µs +6.78%
RegExp Literal (Parser) 13.1±0.04µs 13.4±0.04µs +2.29%
RegExp Literal Creation (Compiler) 3.0±10.18µs 2.1±4.24µs -30.00%
RegExp Literal Creation (Execution) 8.9±10.42µs 8.5±6.58µs -4.49%
RegExp Literal Creation (Parser) 10.9±0.02µs 11.3±0.04µs +3.67%
Static Object Property Access (Compiler) 3.1±9.58µs 2.7±6.11µs -12.90%
Static Object Property Access (Execution) 4.5±7.76µs 4.1±5.93µs -8.89%
Static Object Property Access (Parser) 11.6±0.03µs 11.5±0.02µs -0.86%
String Object Access (Compiler) 2.1±4.64µs 1748.4±1887.96ns -16.74%
String Object Access (Execution) 7.5±7.03µs 7.5±7.07µs 0.00%
String Object Access (Parser) 15.4±0.15µs 15.5±0.03µs +0.65%
String comparison (Compiler) 3.7±5.65µs 3.6±5.80µs -2.70%
String comparison (Execution) 3.8±5.56µs 3.8±5.08µs 0.00%
String comparison (Parser) 14.1±0.03µs 13.7±0.05µs -2.84%
String concatenation (Compiler) 4.9±22.75µs 3.0±4.83µs -38.78%
String concatenation (Execution) 3.4±5.62µs 3.4±5.96µs 0.00%
String concatenation (Parser) 9.6±0.01µs 9.3±0.01µs -3.12%
String copy (Compiler) 2.7±6.48µs 2.4±5.05µs -11.11%
String copy (Execution) 3.0±4.73µs 3.6±7.85µs +20.00%
String copy (Parser) 7.1±0.02µs 7.0±0.01µs -1.41%
Symbols (Compiler) 1771.2±4288.75ns 1619.6±3455.21ns -8.56%
Symbols (Execution) 3.1±4.73µs 3.7±7.60µs +19.35%
Symbols (Parser) 5.2±0.01µs 5.2±0.01µs 0.00%

@github-actions
Copy link

Benchmark for 2395e3e

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 614.3±719.58ns 607.1±795.31ns -1.17%
Arithmetic operations (Execution) 468.3±0.34ns 468.6±2.55ns +0.06%
Arithmetic operations (Parser) 7.6±0.02µs 7.7±0.40µs +1.32%
Array access (Compiler) 1686.2±1763.10ns 2.0±2.50µs +18.61%
Array access (Execution) 7.1±5.50µs 7.2±6.02µs +1.41%
Array access (Parser) 14.6±0.16µs 14.9±0.05µs +2.05%
Array creation (Compiler) 2.9±3.51µs 2.6±2.31µs -10.34%
Array creation (Execution) 786.3±309.45µs 779.3±245.21µs -0.89%
Array creation (Parser) 17.5±0.04µs 17.8±0.17µs +1.71%
Array pop (Compiler) 4.4±3.88µs 5.3±7.66µs +20.45%
Array pop (Execution) 686.8±4.54µs 691.4±7.01µs +0.67%
Array pop (Parser) 163.0±0.31µs 162.9±0.40µs -0.06%
Boolean Object Access (Compiler) 1504.3±2696.79ns 1264.3±1290.38ns -15.95%
Boolean Object Access (Execution) 6.3±5.28µs 8.1±20.10µs +28.57%
Boolean Object Access (Parser) 16.2±0.03µs 16.6±0.70µs +2.47%
Clean js (Compiler) 5.7±5.01µs 5.8±4.55µs +1.75%
Clean js (Execution) 936.0±14.55µs 935.6±13.83µs -0.04%
Clean js (Parser) 37.3±0.06µs 37.1±0.16µs -0.54%
Create Realm 537.3±1400.09µs 597.4±2386.14µs +11.19%
Dynamic Object Property Access (Compiler) 2.2±3.06µs 2.2±2.42µs 0.00%
Dynamic Object Property Access (Execution) 4.1±4.37µs 3.6±3.37µs -12.20%
Dynamic Object Property Access (Parser) 13.0±0.03µs 13.0±0.04µs 0.00%
Fibonacci (Compiler) 3.7±3.71µs 3.9±4.30µs +5.41%
Fibonacci (Execution) 986.7±1221.63µs 874.1±638.80µs -11.41%
Fibonacci (Parser) 20.5±0.03µs 20.8±0.13µs +1.46%
For loop (Compiler) 3.6±4.98µs 3.8±6.83µs +5.56%
For loop (Execution) 18.1±15.18µs 19.9±22.14µs +9.94%
For loop (Parser) 18.6±0.04µs 18.9±0.05µs +1.61%
Mini js (Compiler) 6.9±17.92µs 5.4±4.81µs -21.74%
Mini js (Execution) 888.8±4.82µs 904.3±7.02µs +1.74%
Mini js (Parser) 33.1±0.09µs 32.8±0.08µs -0.91%
Number Object Access (Compiler) 1312.8±1708.32ns 1301.1±867.03ns -0.89%
Number Object Access (Execution) 5.2±4.45µs 5.2±3.33µs 0.00%
Number Object Access (Parser) 13.0±0.02µs 13.2±0.01µs +1.54%
Object Creation (Compiler) 1868.4±2362.74ns 2.0±2.49µs +7.04%
Object Creation (Execution) 4.0±5.41µs 3.2±3.24µs -20.00%
Object Creation (Parser) 11.2±0.03µs 11.3±0.06µs +0.89%
RegExp (Compiler) 2.2±2.30µs 2.5±3.75µs +13.64%
RegExp (Execution) 15.9±37.45µs 12.7±8.68µs -20.13%
RegExp (Parser) 12.2±0.02µs 12.3±0.04µs +0.82%
RegExp Creation (Compiler) 2.1±2.76µs 1951.4±2272.09ns -7.08%
RegExp Creation (Execution) 8.9±6.29µs 8.0±4.44µs -10.11%
RegExp Creation (Parser) 10.2±0.02µs 10.2±0.04µs 0.00%
RegExp Literal (Compiler) 2.5±3.54µs 2.3±3.62µs -8.00%
RegExp Literal (Execution) 12.5±6.51µs 12.8±7.39µs +2.40%
RegExp Literal (Parser) 13.7±0.09µs 13.9±0.03µs +1.46%
RegExp Literal Creation (Compiler) 2.6±5.98µs 1927.0±2011.50ns -25.88%
RegExp Literal Creation (Execution) 9.2±9.53µs 8.7±7.15µs -5.43%
RegExp Literal Creation (Parser) 11.5±0.04µs 11.6±0.03µs +0.87%
Static Object Property Access (Compiler) 2.2±2.88µs 2.2±3.31µs 0.00%
Static Object Property Access (Execution) 4.1±5.14µs 3.4±3.23µs -17.07%
Static Object Property Access (Parser) 12.1±0.02µs 12.1±0.11µs 0.00%
String Object Access (Compiler) 1827.3±2347.92ns 1541.6±1130.97ns -15.64%
String Object Access (Execution) 8.2±5.98µs 8.9±13.16µs +8.54%
String Object Access (Parser) 16.2±0.24µs 16.4±0.34µs +1.23%
String comparison (Compiler) 3.4±4.16µs 4.1±11.00µs +20.59%
String comparison (Execution) 3.4±3.11µs 4.0±6.47µs +17.65%
String comparison (Parser) 14.7±0.04µs 14.8±0.02µs +0.68%
String concatenation (Compiler) 2.9±4.48µs 2.5±3.13µs -13.79%
String concatenation (Execution) 3.2±4.02µs 3.9±10.33µs +21.87%
String concatenation (Parser) 9.9±0.03µs 10.0±0.05µs +1.01%
String copy (Compiler) 1959.3±2051.34ns 1844.2±2033.49ns -5.87%
String copy (Execution) 2.7±3.03µs 2.7±2.82µs 0.00%
String copy (Parser) 7.5±0.03µs 7.7±0.02µs +2.67%
Symbols (Compiler) 1465.3±2402.47ns 1376.9±1683.77ns -6.03%
Symbols (Execution) 3.4±5.70µs 3.1±4.00µs -8.82%
Symbols (Parser) 5.5±0.01µs 5.6±0.04µs +1.82%

@HalidOdat HalidOdat force-pushed the optimization/static-shapes branch 2 times, most recently from 34b540d to 72be6bd Compare May 1, 2023 11:56
@github-actions
Copy link

github-actions bot commented May 1, 2023

Benchmark for 5743b5c

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 637.4±854.48ns 844.2±2299.34ns +32.44%
Arithmetic operations (Execution) 451.4±0.30ns 456.4±0.51ns +1.11%
Arithmetic operations (Parser) 7.2±0.01µs 7.1±0.01µs -1.39%
Array access (Compiler) 2.2±4.58µs 2.2±3.51µs 0.00%
Array access (Execution) 6.7±6.16µs 6.8±6.70µs +1.49%
Array access (Parser) 13.9±0.03µs 13.3±0.02µs -4.32%
Array creation (Compiler) 3.2±4.45µs 2.7±3.76µs -15.63%
Array creation (Execution) 892.5±1053.28µs 791.4±496.43µs -11.33%
Array creation (Parser) 16.7±0.06µs 16.2±0.03µs -2.99%
Array pop (Compiler) 4.7±4.39µs 5.1±6.30µs +8.51%
Array pop (Execution) 712.7±590.05µs 654.5±7.25µs -8.17%
Array pop (Parser) 152.9±0.23µs 149.5±0.13µs -2.22%
Boolean Object Access (Compiler) 1484.5±1823.56ns 1164.2±899.65ns -21.58%
Boolean Object Access (Execution) 6.1±6.24µs 6.7±9.01µs +9.84%
Boolean Object Access (Parser) 15.8±0.01µs 15.3±0.02µs -3.16%
Clean js (Compiler) 6.8±11.11µs 6.4±9.66µs -5.88%
Clean js (Execution) 935.0±442.71µs 912.0±330.39µs -2.46%
Clean js (Parser) 35.7±0.05µs 34.8±0.05µs -2.52%
Create Realm 601.3±1655.52µs 464.3±1539.85µs -22.78%
Dynamic Object Property Access (Compiler) 2.4±3.39µs 2.8±5.96µs +16.67%
Dynamic Object Property Access (Execution) 4.1±5.17µs 3.9±4.69µs -4.88%
Dynamic Object Property Access (Parser) 12.4±0.12µs 12.3±0.05µs -0.81%
Fibonacci (Compiler) 4.7±10.38µs 3.5±4.03µs -25.53%
Fibonacci (Execution) 897.9±1218.84µs 968.2±1175.13µs +7.83%
Fibonacci (Parser) 19.7±0.05µs 19.3±0.02µs -2.03%
For loop (Compiler) 3.4±4.30µs 4.9±18.77µs +44.12%
For loop (Execution) 24.6±57.74µs 18.8±23.29µs -23.58%
For loop (Parser) 17.6±0.02µs 17.3±0.02µs -1.70%
Mini js (Compiler) 6.0±7.24µs 7.2±20.45µs +20.00%
Mini js (Execution) 828.7±3.93µs 846.0±8.89µs +2.09%
Mini js (Parser) 31.5±0.04µs 30.9±0.05µs -1.90%
Number Object Access (Compiler) 1393.5±1808.32ns 1143.2±981.94ns -17.96%
Number Object Access (Execution) 4.5±4.35µs 4.9±4.09µs +8.89%
Number Object Access (Parser) 12.7±0.03µs 12.4±0.01µs -2.36%
Object Creation (Compiler) 2.2±4.40µs 1989.6±2685.72ns -9.56%
Object Creation (Execution) 4.1±5.93µs 4.2±7.02µs +2.44%
Object Creation (Parser) 10.7±0.02µs 10.5±0.02µs -1.87%
RegExp (Compiler) 2.6±4.20µs 2.5±3.42µs -3.85%
RegExp (Execution) 13.2±13.25µs 12.9±13.65µs -2.27%
RegExp (Parser) 11.6±0.02µs 11.5±0.02µs -0.86%
RegExp Creation (Compiler) 1980.8±2583.31ns 3.5±13.10µs +76.70%
RegExp Creation (Execution) 7.9±5.54µs 8.7±9.61µs +10.13%
RegExp Creation (Parser) 9.7±0.02µs 9.6±0.03µs -1.03%
RegExp Literal (Compiler) 2.3±3.36µs 3.3±9.22µs +43.48%
RegExp Literal (Execution) 15.3±35.03µs 13.3±16.99µs -13.07%
RegExp Literal (Parser) 13.1±0.06µs 12.7±0.02µs -3.05%
RegExp Literal Creation (Compiler) 2.1±2.74µs 2.1±3.42µs 0.00%
RegExp Literal Creation (Execution) 8.7±8.20µs 8.9±11.30µs +2.30%
RegExp Literal Creation (Parser) 11.0±0.05µs 10.8±0.02µs -1.82%
Static Object Property Access (Compiler) 2.6±5.88µs 2.3±3.56µs -11.54%
Static Object Property Access (Execution) 4.4±6.91µs 4.2±5.68µs -4.55%
Static Object Property Access (Parser) 11.4±0.03µs 11.3±0.02µs -0.88%
String Object Access (Compiler) 1787.2±2264.97ns 1935.2±3107.49ns +8.28%
String Object Access (Execution) 9.6±18.95µs 7.4±5.01µs -22.92%
String Object Access (Parser) 15.7±0.02µs 15.3±0.01µs -2.55%
String comparison (Compiler) 3.4±4.69µs 3.4±4.91µs 0.00%
String comparison (Execution) 3.7±4.93µs 3.5±4.55µs -5.41%
String comparison (Parser) 13.7±0.02µs 13.5±0.02µs -1.46%
String concatenation (Compiler) 2.8±4.04µs 3.1±6.59µs +10.71%
String concatenation (Execution) 3.2±4.41µs 3.5±6.15µs +9.37%
String concatenation (Parser) 9.3±0.02µs 9.2±0.02µs -1.08%
String copy (Compiler) 2.4±5.94µs 1952.9±3222.97ns -18.63%
String copy (Execution) 3.0±4.43µs 3.4±6.45µs +13.33%
String copy (Parser) 7.0±0.02µs 6.9±0.02µs -1.43%
Symbols (Compiler) 1609.0±3404.76ns 1798.8±4876.32ns +11.80%
Symbols (Execution) 4.4±15.13µs 2.9±3.58µs -34.09%
Symbols (Parser) 5.2±0.02µs 5.1±0.01µs -1.92%

@github-actions
Copy link

github-actions bot commented May 1, 2023

Benchmark for a318abb

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 768.6±1569.03ns 659.0±1245.00ns -14.26%
Arithmetic operations (Execution) 458.9±0.14ns 461.7±0.25ns +0.61%
Arithmetic operations (Parser) 7.2±0.02µs 7.0±0.01µs -2.78%
Array access (Compiler) 1847.5±2607.22ns 2.1±3.16µs +13.67%
Array access (Execution) 6.9±6.77µs 7.9±11.17µs +14.49%
Array access (Parser) 13.9±0.01µs 13.4±0.03µs -3.60%
Array creation (Compiler) 3.0±4.78µs 3.3±5.32µs +10.00%
Array creation (Execution) 806.0±421.77µs 856.7±810.90µs +6.29%
Array creation (Parser) 16.8±0.03µs 16.2±0.03µs -3.57%
Array pop (Compiler) 5.0±5.72µs 5.7±6.80µs +14.00%
Array pop (Execution) 643.4±5.99µs 695.6±396.50µs +8.11%
Array pop (Parser) 157.6±0.53µs 151.3±0.15µs -4.00%
Boolean Object Access (Compiler) 1367.5±1218.83ns 1441.8±1834.40ns +5.43%
Boolean Object Access (Execution) 5.9±4.60µs 7.1±12.28µs +20.34%
Boolean Object Access (Parser) 15.9±0.02µs 15.3±0.01µs -3.77%
Clean js (Compiler) 6.2±7.14µs 6.8±10.14µs +9.68%
Clean js (Execution) 918.4±384.94µs 937.8±445.29µs +2.11%
Clean js (Parser) 35.9±0.07µs 34.9±0.02µs -2.79%
Create Realm 583.4±1605.23µs 417.8±1277.46µs -28.39%
Dynamic Object Property Access (Compiler) 2.1±3.19µs 3.2±11.59µs +52.38%
Dynamic Object Property Access (Execution) 4.1±5.04µs 5.7±17.83µs +39.02%
Dynamic Object Property Access (Parser) 12.5±0.02µs 12.2±0.02µs -2.40%
Fibonacci (Compiler) 3.6±4.03µs 3.8±4.17µs +5.56%
Fibonacci (Execution) 933.1±997.01µs 902.6±1133.81µs -3.27%
Fibonacci (Parser) 19.4±0.02µs 19.2±0.02µs -1.03%
For loop (Compiler) 3.3±4.31µs 3.5±5.36µs +6.06%
For loop (Execution) 18.6±22.31µs 19.8±27.68µs +6.45%
For loop (Parser) 17.8±0.04µs 17.3±0.05µs -2.81%
Mini js (Compiler) 5.1±4.84µs 7.5±22.88µs +47.06%
Mini js (Execution) 831.0±4.24µs 843.2±2.55µs +1.47%
Mini js (Parser) 31.6±0.04µs 30.7±0.03µs -2.85%
Number Object Access (Compiler) 1240.1±1072.84ns 1366.1±2052.39ns +10.16%
Number Object Access (Execution) 4.4±3.62µs 4.7±4.01µs +6.82%
Number Object Access (Parser) 12.7±0.01µs 12.4±0.03µs -2.36%
Object Creation (Compiler) 3.1±13.10µs 2.8±8.73µs -9.68%
Object Creation (Execution) 5.2±15.13µs 3.9±5.18µs -25.00%
Object Creation (Parser) 10.7±0.02µs 10.5±0.02µs -1.87%
RegExp (Compiler) 2.2±3.22µs 2.2±4.25µs 0.00%
RegExp (Execution) 14.2±23.05µs 13.0±11.35µs -8.45%
RegExp (Parser) 11.8±0.03µs 11.4±0.02µs -3.39%
RegExp Creation (Compiler) 1841.2±2775.63ns 2.5±6.81µs +35.78%
RegExp Creation (Execution) 8.6±7.25µs 9.5±15.62µs +10.47%
RegExp Creation (Parser) 9.8±0.03µs 9.7±0.02µs -1.02%
RegExp Literal (Compiler) 2.2±2.98µs 2.1±3.09µs -4.55%
RegExp Literal (Execution) 12.1±7.41µs 13.9±21.07µs +14.88%
RegExp Literal (Parser) 13.2±0.03µs 12.9±0.02µs -2.27%
RegExp Literal Creation (Compiler) 1960.9±2524.73ns 2.3±4.15µs +17.29%
RegExp Literal Creation (Execution) 8.9±9.49µs 8.6±7.85µs -3.37%
RegExp Literal Creation (Parser) 11.0±0.03µs 10.8±0.02µs -1.82%
Static Object Property Access (Compiler) 2.1±2.89µs 2.6±7.69µs +23.81%
Static Object Property Access (Execution) 4.3±6.97µs 4.0±5.17µs -6.98%
Static Object Property Access (Parser) 11.5±0.02µs 11.2±0.02µs -2.61%
String Object Access (Compiler) 1637.5±1441.84ns 1739.2±1688.04ns +6.21%
String Object Access (Execution) 7.7±7.10µs 8.5±14.74µs +10.39%
String Object Access (Parser) 15.7±0.03µs 15.3±0.02µs -2.55%
String comparison (Compiler) 2.9±3.03µs 2.9±3.21µs 0.00%
String comparison (Execution) 4.0±6.50µs 3.6±4.59µs -10.00%
String comparison (Parser) 13.9±0.04µs 13.5±0.02µs -2.88%
String concatenation (Compiler) 2.8±5.15µs 2.8±4.56µs 0.00%
String concatenation (Execution) 3.4±5.05µs 3.7±7.67µs +8.82%
String concatenation (Parser) 9.4±0.02µs 9.2±0.01µs -2.13%
String copy (Compiler) 2.1±3.45µs 4.2±22.70µs +100.00%
String copy (Execution) 2.8±3.85µs 2.6±3.75µs -7.14%
String copy (Parser) 7.1±0.02µs 6.8±0.01µs -4.23%
Symbols (Compiler) 1526.0±3027.70ns 1477.9±2775.64ns -3.15%
Symbols (Execution) 3.3±5.72µs 3.1±4.71µs -6.06%
Symbols (Parser) 5.2±0.01µs 5.1±0.01µs -1.92%

@github-actions
Copy link

github-actions bot commented May 1, 2023

Benchmark for 155f3bc

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 551.7±629.06ns 588.9±594.71ns +6.74%
Arithmetic operations (Execution) 462.3±0.23ns 461.8±0.19ns -0.11%
Arithmetic operations (Parser) 7.3±0.02µs 7.4±0.04µs +1.37%
Array access (Compiler) 1808.8±2427.67ns 1894.6±2219.03ns +4.74%
Array access (Execution) 7.6±9.19µs 8.2±14.07µs +7.89%
Array access (Parser) 14.7±0.04µs 14.8±0.06µs +0.68%
Array creation (Compiler) 2.5±2.32µs 2.5±2.32µs 0.00%
Array creation (Execution) 885.9±914.02µs 792.2±349.39µs -10.58%
Array creation (Parser) 17.7±0.07µs 17.6±0.03µs -0.56%
Array pop (Compiler) 4.0±2.78µs 4.1±2.30µs +2.50%
Array pop (Execution) 755.1±482.03µs 734.9±250.38µs -2.68%
Array pop (Parser) 161.3±0.16µs 162.1±0.17µs +0.50%
Boolean Object Access (Compiler) 1307.4±1238.30ns 1319.2±799.79ns +0.90%
Boolean Object Access (Execution) 5.9±3.43µs 6.8±7.49µs +15.25%
Boolean Object Access (Parser) 17.4±0.82µs 17.8±0.73µs +2.30%
Clean js (Compiler) 5.7±5.08µs 5.6±4.36µs -1.75%
Clean js (Execution) 984.8±361.21µs 933.7±27.92µs -5.19%
Clean js (Parser) 37.2±0.08µs 37.3±0.06µs +0.27%
Create Realm 529.8±1384.53µs 572.5±2536.63µs +8.06%
Dynamic Object Property Access (Compiler) 2.4±5.22µs 2.5±3.59µs +4.17%
Dynamic Object Property Access (Execution) 4.1±4.63µs 4.5±7.20µs +9.76%
Dynamic Object Property Access (Parser) 13.0±0.03µs 13.1±0.03µs +0.77%
Fibonacci (Compiler) 3.7±3.67µs 3.6±3.35µs -2.70%
Fibonacci (Execution) 901.2±662.11µs 923.0±754.63µs +2.42%
Fibonacci (Parser) 20.5±0.07µs 20.8±0.05µs +1.46%
For loop (Compiler) 3.4±3.81µs 3.0±2.76µs -11.76%
For loop (Execution) 19.2±19.27µs 25.6±75.81µs +33.33%
For loop (Parser) 18.8±0.04µs 18.7±0.04µs -0.53%
Mini js (Compiler) 5.0±4.08µs 5.5±4.82µs +10.00%
Mini js (Execution) 895.9±3.27µs 908.1±198.29µs +1.36%
Mini js (Parser) 32.5±0.07µs 32.8±0.07µs +0.92%
Number Object Access (Compiler) 1198.7±957.34ns 1191.9±986.57ns -0.57%
Number Object Access (Execution) 4.9±2.93µs 5.5±7.33µs +12.24%
Number Object Access (Parser) 13.0±0.02µs 13.0±0.03µs 0.00%
Object Creation (Compiler) 1787.0±2240.64ns 2.0±1.86µs +11.92%
Object Creation (Execution) 4.0±5.35µs 4.0±4.87µs 0.00%
Object Creation (Parser) 11.3±0.09µs 11.3±0.05µs 0.00%
RegExp (Compiler) 2.2±2.51µs 2.3±2.72µs +4.55%
RegExp (Execution) 12.7±7.95µs 13.7±16.49µs +7.87%
RegExp (Parser) 12.2±0.05µs 12.2±0.04µs 0.00%
RegExp Creation (Compiler) 2.0±2.91µs 1988.3±2036.91ns -0.58%
RegExp Creation (Execution) 8.9±8.25µs 8.5±4.78µs -4.49%
RegExp Creation (Parser) 10.2±0.06µs 10.1±0.02µs -0.98%
RegExp Literal (Compiler) 2.2±2.68µs 2.2±2.54µs 0.00%
RegExp Literal (Execution) 13.0±10.76µs 13.0±9.71µs 0.00%
RegExp Literal (Parser) 13.6±0.02µs 13.7±0.03µs +0.74%
RegExp Literal Creation (Compiler) 1927.0±2317.85ns 2.2±4.04µs +14.17%
RegExp Literal Creation (Execution) 8.2±4.09µs 9.1±8.23µs +10.98%
RegExp Literal Creation (Parser) 11.6±0.03µs 11.6±0.03µs 0.00%
Static Object Property Access (Compiler) 2.2±2.79µs 2.2±2.33µs 0.00%
Static Object Property Access (Execution) 4.0±4.85µs 4.4±7.21µs +10.00%
Static Object Property Access (Parser) 12.1±0.05µs 12.1±0.04µs 0.00%
String Object Access (Compiler) 1753.5±1809.68ns 1616.7±1358.75ns -7.80%
String Object Access (Execution) 7.8±3.74µs 8.8±12.80µs +12.82%
String Object Access (Parser) 17.5±0.72µs 17.4±0.98µs -0.57%
String comparison (Compiler) 3.7±7.70µs 3.2±2.65µs -13.51%
String comparison (Execution) 3.3±3.02µs 3.6±4.29µs +9.09%
String comparison (Parser) 14.7±0.05µs 14.7±0.03µs 0.00%
String concatenation (Compiler) 2.5±2.63µs 2.9±5.59µs +16.00%
String concatenation (Execution) 3.0±3.15µs 3.2±4.10µs +6.67%
String concatenation (Parser) 10.1±0.06µs 10.0±0.03µs -0.99%
String copy (Compiler) 1883.1±2400.13ns 1877.5±2149.25ns -0.30%
String copy (Execution) 2.7±2.96µs 2.8±2.92µs +3.70%
String copy (Parser) 7.7±0.06µs 7.5±0.02µs -2.60%
Symbols (Compiler) 1384.5±2098.02ns 1353.9±1684.82ns -2.21%
Symbols (Execution) 3.0±3.39µs 3.4±6.70µs +13.33%
Symbols (Parser) 5.6±0.03µs 5.6±0.02µs 0.00%

@HalidOdat HalidOdat force-pushed the optimization/static-shapes branch from 88ff904 to bfaea4c Compare May 1, 2023 19:17
@github-actions
Copy link

github-actions bot commented May 1, 2023

Benchmark for a3ab305

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 861.0±2200.90ns 693.8±834.41ns -19.42%
Arithmetic operations (Execution) 526.6±19.99ns 534.6±21.81ns +1.52%
Arithmetic operations (Parser) 7.9±0.51µs 7.6±0.35µs -3.80%
Array access (Compiler) 2.1±3.61µs 2.4±3.12µs +14.29%
Array access (Execution) 8.8±12.08µs 8.6±10.21µs -2.27%
Array access (Parser) 14.6±0.72µs 14.4±0.68µs -1.37%
Array creation (Compiler) 3.8±9.32µs 3.4±5.00µs -10.53%
Array creation (Execution) 866.5±34.61µs 946.2±863.29µs +9.20%
Array creation (Parser) 17.8±0.84µs 18.5±1.29µs +3.93%
Array pop (Compiler) 5.1±4.87µs 5.4±4.20µs +5.88%
Array pop (Execution) 747.6±28.32µs 795.1±546.37µs +6.35%
Array pop (Parser) 175.1±9.15µs 182.0±18.04µs +3.94%
Boolean Object Access (Compiler) 1781.8±2936.13ns 1365.9±1115.61ns -23.34%
Boolean Object Access (Execution) 7.5±11.44µs 6.9±5.12µs -8.00%
Boolean Object Access (Parser) 17.3±0.86µs 16.8±1.10µs -2.89%
Clean js (Compiler) 7.2±9.54µs 7.6±8.64µs +5.56%
Clean js (Execution) 1029.2±37.69µs 1105.8±760.42µs +7.44%
Clean js (Parser) 38.6±1.60µs 37.8±1.72µs -2.07%
Create Realm 679.8±1888.69µs 836.5±4876.88µs +23.05%
Dynamic Object Property Access (Compiler) 3.0±4.77µs 2.9±4.11µs -3.33%
Dynamic Object Property Access (Execution) 6.0±14.33µs 6.7±22.45µs +11.67%
Dynamic Object Property Access (Parser) 13.7±0.58µs 13.4±0.56µs -2.19%
Fibonacci (Compiler) 4.2±4.33µs 5.2±11.08µs +23.81%
Fibonacci (Execution) 1051.7±1254.60µs 1083.8±1204.03µs +3.05%
Fibonacci (Parser) 20.7±1.01µs 21.9±1.26µs +5.80%
For loop (Compiler) 4.5±8.32µs 4.4±7.72µs -2.22%
For loop (Execution) 22.7±28.92µs 23.4±30.48µs +3.08%
For loop (Parser) 19.2±1.31µs 19.6±1.22µs +2.08%
Mini js (Compiler) 7.1±9.37µs 8.5±22.81µs +19.72%
Mini js (Execution) 959.1±31.95µs 963.0±37.48µs +0.41%
Mini js (Parser) 33.9±1.87µs 36.1±2.53µs +6.49%
Number Object Access (Compiler) 1511.5±1249.18ns 1846.6±5000.47ns +22.17%
Number Object Access (Execution) 5.2±4.64µs 6.0±8.07µs +15.38%
Number Object Access (Parser) 13.7±0.64µs 14.0±0.77µs +2.19%
Object Creation (Compiler) 2.4±3.48µs 2.6±3.71µs +8.33%
Object Creation (Execution) 4.7±6.30µs 4.6±5.78µs -2.13%
Object Creation (Parser) 11.4±0.44µs 11.3±0.54µs -0.88%
RegExp (Compiler) 2.4±3.57µs 3.7±13.33µs +54.17%
RegExp (Execution) 14.9±12.85µs 20.0±56.47µs +34.23%
RegExp (Parser) 12.5±0.70µs 12.6±0.46µs +0.80%
RegExp Creation (Compiler) 4.5±21.19µs 2.5±2.91µs -44.44%
RegExp Creation (Execution) 10.4±10.20µs 10.3±6.16µs -0.96%
RegExp Creation (Parser) 10.6±0.49µs 10.6±0.38µs 0.00%
RegExp Literal (Compiler) 3.5±11.79µs 2.9±3.28µs -17.14%
RegExp Literal (Execution) 14.7±8.71µs 15.0±9.05µs +2.04%
RegExp Literal (Parser) 14.2±0.62µs 14.6±0.43µs +2.82%
RegExp Literal Creation (Compiler) 3.4±9.65µs 2.8±5.97µs -17.65%
RegExp Literal Creation (Execution) 16.0±66.14µs 10.5±7.18µs -34.38%
RegExp Literal Creation (Parser) 12.3±0.67µs 12.5±0.68µs +1.63%
Static Object Property Access (Compiler) 2.7±4.17µs 2.4±2.96µs -11.11%
Static Object Property Access (Execution) 6.5±19.20µs 4.9±7.28µs -24.62%
Static Object Property Access (Parser) 12.5±0.39µs 12.2±0.38µs -2.40%
String Object Access (Compiler) 1821.6±2035.40ns 1921.6±1641.74ns +5.49%
String Object Access (Execution) 9.3±10.15µs 9.2±8.59µs -1.08%
String Object Access (Parser) 17.5±1.59µs 16.9±0.70µs -3.43%
String comparison (Compiler) 3.3±3.84µs 4.0±6.44µs +21.21%
String comparison (Execution) 4.3±5.51µs 5.0±10.93µs +16.28%
String comparison (Parser) 15.2±0.90µs 15.3±0.78µs +0.66%
String concatenation (Compiler) 3.4±7.80µs 3.0±3.81µs -11.76%
String concatenation (Execution) 3.9±6.71µs 4.2±7.45µs +7.69%
String concatenation (Parser) 10.0±0.41µs 10.2±0.44µs +2.00%
String copy (Compiler) 2.2±3.57µs 2.1±3.17µs -4.55%
String copy (Execution) 4.1±10.62µs 3.7±5.98µs -9.76%
String copy (Parser) 7.6±0.48µs 7.6±0.63µs 0.00%
Symbols (Compiler) 1801.6±3944.41ns 1726.5±3245.97ns -4.17%
Symbols (Execution) 4.5±11.00µs 3.5±4.25µs -22.22%
Symbols (Parser) 5.5±0.20µs 5.2±0.31µs -5.45%

@github-actions
Copy link

github-actions bot commented May 1, 2023

Benchmark for 4b86e61

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 575.5±683.20ns 580.6±663.09ns +0.89%
Arithmetic operations (Execution) 468.9±0.29ns 462.6±0.25ns -1.34%
Arithmetic operations (Parser) 7.5±0.02µs 7.4±0.04µs -1.33%
Array access (Compiler) 2.2±4.52µs 1958.2±2975.59ns -10.99%
Array access (Execution) 7.1±5.79µs 8.1±11.87µs +14.08%
Array access (Parser) 14.7±0.03µs 14.7±0.07µs 0.00%
Array creation (Compiler) 2.7±3.15µs 2.7±3.12µs 0.00%
Array creation (Execution) 797.2±302.79µs 800.5±362.83µs +0.41%
Array creation (Parser) 17.6±0.05µs 17.6±0.05µs 0.00%
Array pop (Compiler) 4.7±5.43µs 4.7±4.38µs 0.00%
Array pop (Execution) 704.8±7.57µs 739.3±251.66µs +4.90%
Array pop (Parser) 160.1±0.25µs 160.9±0.19µs +0.50%
Boolean Object Access (Compiler) 1162.0±833.46ns 1521.1±3309.35ns +30.90%
Boolean Object Access (Execution) 6.4±7.29µs 6.8±7.87µs +6.25%
Boolean Object Access (Parser) 17.9±0.52µs 17.0±0.79µs -5.03%
Clean js (Compiler) 5.9±5.44µs 10.9±50.65µs +84.75%
Clean js (Execution) 980.7±304.48µs 950.3±17.57µs -3.10%
Clean js (Parser) 37.3±0.20µs 37.0±0.10µs -0.80%
Create Realm 540.3±1466.77µs 619.1±2804.97µs +14.58%
Dynamic Object Property Access (Compiler) 2.5±4.07µs 2.4±3.85µs -4.00%
Dynamic Object Property Access (Execution) 3.9±4.17µs 4.6±8.46µs +17.95%
Dynamic Object Property Access (Parser) 12.9±0.04µs 13.1±0.05µs +1.55%
Fibonacci (Compiler) 3.8±4.25µs 4.0±4.26µs +5.26%
Fibonacci (Execution) 944.1±884.20µs 940.2±789.58µs -0.41%
Fibonacci (Parser) 20.3±0.06µs 20.6±0.09µs +1.48%
For loop (Compiler) 3.4±4.15µs 3.6±3.88µs +5.88%
For loop (Execution) 17.9±15.86µs 18.9±15.77µs +5.59%
For loop (Parser) 18.8±0.04µs 18.7±0.04µs -0.53%
Mini js (Compiler) 5.7±6.56µs 5.6±5.61µs -1.75%
Mini js (Execution) 898.4±12.89µs 904.1±13.55µs +0.63%
Mini js (Parser) 32.7±0.08µs 32.7±0.08µs 0.00%
Number Object Access (Compiler) 1122.3±726.39ns 1499.2±3619.00ns +33.58%
Number Object Access (Execution) 5.4±5.60µs 5.5±6.93µs +1.85%
Number Object Access (Parser) 13.0±0.02µs 13.0±0.02µs 0.00%
Object Creation (Compiler) 1971.0±2525.47ns 2.1±2.26µs +6.54%
Object Creation (Execution) 3.6±4.13µs 3.9±5.00µs +8.33%
Object Creation (Parser) 11.2±0.03µs 11.2±0.04µs 0.00%
RegExp (Compiler) 2.6±4.17µs 2.4±3.39µs -7.69%
RegExp (Execution) 13.9±19.03µs 11.8±5.15µs -15.11%
RegExp (Parser) 12.2±0.04µs 12.1±0.02µs -0.82%
RegExp Creation (Compiler) 2.4±6.87µs 2.1±2.00µs -12.50%
RegExp Creation (Execution) 8.7±6.38µs 8.4±4.94µs -3.45%
RegExp Creation (Parser) 10.1±0.03µs 10.1±0.03µs 0.00%
RegExp Literal (Compiler) 2.1±2.54µs 2.4±3.29µs +14.29%
RegExp Literal (Execution) 12.4±6.75µs 13.1±11.04µs +5.65%
RegExp Literal (Parser) 13.6±0.04µs 13.6±0.03µs 0.00%
RegExp Literal Creation (Compiler) 2.0±3.30µs 2.2±3.33µs +10.00%
RegExp Literal Creation (Execution) 8.9±8.05µs 9.2±9.44µs +3.37%
RegExp Literal Creation (Parser) 11.6±0.03µs 11.5±0.03µs -0.86%
Static Object Property Access (Compiler) 2.0±2.99µs 2.2±2.50µs +10.00%
Static Object Property Access (Execution) 4.0±4.99µs 4.7±9.60µs +17.50%
Static Object Property Access (Parser) 12.0±0.04µs 12.0±0.05µs 0.00%
String Object Access (Compiler) 1927.3±2265.11ns 1730.5±1665.27ns -10.21%
String Object Access (Execution) 9.5±12.55µs 8.3±8.45µs -12.63%
String Object Access (Parser) 17.5±0.86µs 16.9±0.91µs -3.43%
String comparison (Compiler) 3.5±5.14µs 3.6±5.06µs +2.86%
String comparison (Execution) 4.6±12.16µs 3.7±4.41µs -19.57%
String comparison (Parser) 14.7±0.04µs 14.6±0.05µs -0.68%
String concatenation (Compiler) 3.2±8.36µs 2.4±2.74µs -25.00%
String concatenation (Execution) 3.2±4.07µs 3.2±4.21µs 0.00%
String concatenation (Parser) 10.0±0.04µs 10.0±0.07µs 0.00%
String copy (Compiler) 2.0±3.44µs 2.1±2.46µs +5.00%
String copy (Execution) 2.8±3.57µs 2.7±2.85µs -3.57%
String copy (Parser) 7.6±0.04µs 7.6±0.02µs 0.00%
Symbols (Compiler) 1463.1±2340.69ns 1344.4±1703.91ns -8.11%
Symbols (Execution) 3.1±3.90µs 3.3±6.42µs +6.45%
Symbols (Parser) 5.7±0.03µs 5.5±0.01µs -3.51%

@github-actions
Copy link

github-actions bot commented May 1, 2023

Benchmark for ec9310a

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 926.8±1820.29ns 864.2±1089.13ns -6.75%
Arithmetic operations (Execution) 586.0±30.57ns 602.9±35.39ns +2.88%
Arithmetic operations (Parser) 9.3±0.47µs 9.2±0.37µs -1.08%
Array access (Compiler) 2.2±3.12µs 2.3±2.82µs +4.55%
Array access (Execution) 9.5±10.46µs 9.4±8.34µs -1.05%
Array access (Parser) 18.5±0.85µs 17.9±0.86µs -3.24%
Array creation (Compiler) 4.7±10.44µs 3.7±5.46µs -21.28%
Array creation (Execution) 1086.6±914.51µs 1139.9±1895.39µs +4.91%
Array creation (Parser) 22.8±1.46µs 22.4±0.69µs -1.75%
Array pop (Compiler) 6.7±8.21µs 6.5±7.85µs -2.99%
Array pop (Execution) 897.8±362.98µs 1012.0±1858.32µs +12.72%
Array pop (Parser) 209.1±13.58µs 198.3±7.06µs -5.16%
Boolean Object Access (Compiler) 1609.4±1372.92ns 1882.6±1972.45ns +16.98%
Boolean Object Access (Execution) 8.0±6.23µs 7.8±6.83µs -2.50%
Boolean Object Access (Parser) 20.2±1.27µs 20.0±1.29µs -0.99%
Clean js (Compiler) 8.4±8.23µs 7.9±8.91µs -5.95%
Clean js (Execution) 1250.5±660.80µs 1241.9±741.34µs -0.69%
Clean js (Parser) 47.1±1.96µs 47.9±4.30µs +1.70%
Create Realm 890.6±2324.54µs 820.4±3642.66µs -7.88%
Dynamic Object Property Access (Compiler) 3.1±3.93µs 3.4±4.16µs +9.68%
Dynamic Object Property Access (Execution) 6.0±10.53µs 8.8±35.85µs +46.67%
Dynamic Object Property Access (Parser) 16.3±1.38µs 16.5±0.62µs +1.23%
Fibonacci (Compiler) 4.7±4.79µs 5.9±11.92µs +25.53%
Fibonacci (Execution) 1182.9±1436.50µs 1235.8±1736.99µs +4.47%
Fibonacci (Parser) 25.8±1.77µs 26.4±4.49µs +2.33%
For loop (Compiler) 4.9±6.15µs 4.1±5.06µs -16.33%
For loop (Execution) 26.4±36.30µs 28.8±52.47µs +9.09%
For loop (Parser) 23.3±1.05µs 24.4±1.52µs +4.72%
Mini js (Compiler) 8.5±13.77µs 7.9±9.18µs -7.06%
Mini js (Execution) 1160.2±95.39µs 1145.2±60.16µs -1.29%
Mini js (Parser) 41.3±2.05µs 40.1±1.32µs -2.91%
Number Object Access (Compiler) 1925.6±2334.61ns 1874.1±2112.54ns -2.67%
Number Object Access (Execution) 7.3±13.66µs 6.5±5.78µs -10.96%
Number Object Access (Parser) 16.3±0.64µs 16.1±0.51µs -1.23%
Object Creation (Compiler) 2.7±3.14µs 3.0±4.42µs +11.11%
Object Creation (Execution) 5.7±11.33µs 5.8±11.72µs +1.75%
Object Creation (Parser) 14.4±0.97µs 14.4±0.69µs 0.00%
RegExp (Compiler) 2.7±3.26µs 3.7±7.70µs +37.04%
RegExp (Execution) 17.8±14.10µs 19.1±20.49µs +7.30%
RegExp (Parser) 15.5±0.74µs 15.5±0.75µs 0.00%
RegExp Creation (Compiler) 2.9±4.88µs 2.8±3.40µs -3.45%
RegExp Creation (Execution) 12.8±17.93µs 11.2±7.99µs -12.50%
RegExp Creation (Parser) 13.0±0.57µs 12.7±0.62µs -2.31%
RegExp Literal (Compiler) 2.8±2.92µs 3.1±4.28µs +10.71%
RegExp Literal (Execution) 17.6±11.83µs 18.1±11.37µs +2.84%
RegExp Literal (Parser) 18.4±1.51µs 17.9±1.22µs -2.72%
RegExp Literal Creation (Compiler) 6.0±31.64µs 2.5±3.21µs -58.33%
RegExp Literal Creation (Execution) 11.5±11.15µs 11.7±11.45µs +1.74%
RegExp Literal Creation (Parser) 14.2±0.55µs 14.4±0.59µs +1.41%
Static Object Property Access (Compiler) 7.9±53.53µs 2.6±2.97µs -67.09%
Static Object Property Access (Execution) 5.5±7.60µs 5.6±8.08µs +1.82%
Static Object Property Access (Parser) 15.1±0.67µs 15.3±0.53µs +1.32%
String Object Access (Compiler) 2.4±2.71µs 2.3±2.53µs -4.17%
String Object Access (Execution) 10.8±9.28µs 10.1±8.23µs -6.48%
String Object Access (Parser) 19.7±0.77µs 20.3±1.07µs +3.05%
String comparison (Compiler) 4.0±4.02µs 4.1±3.50µs +2.50%
String comparison (Execution) 5.0±7.65µs 4.9±7.20µs -2.00%
String comparison (Parser) 17.9±0.96µs 18.4±1.14µs +2.79%
String concatenation (Compiler) 5.2±19.65µs 3.3±4.40µs -36.54%
String concatenation (Execution) 4.6±9.23µs 5.7±18.20µs +23.91%
String concatenation (Parser) 12.1±0.88µs 12.4±0.79µs +2.48%
String copy (Compiler) 2.7±4.44µs 2.6±3.32µs -3.70%
String copy (Execution) 4.4±9.07µs 3.6±4.67µs -18.18%
String copy (Parser) 9.1±0.53µs 9.2±0.38µs +1.10%
Symbols (Compiler) 2.0±3.98µs 1946.8±3230.29ns -2.66%
Symbols (Execution) 5.5±16.79µs 4.2±5.97µs -23.64%
Symbols (Parser) 6.9±0.33µs 6.7±0.34µs -2.90%

@github-actions
Copy link

github-actions bot commented May 2, 2023

Benchmark for 27bc506

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 825.3±1324.51ns 905.1±1259.42ns +9.67%
Arithmetic operations (Execution) 564.0±30.16ns 557.5±27.58ns -1.15%
Arithmetic operations (Parser) 9.2±0.49µs 9.1±0.64µs -1.09%
Array access (Compiler) 2.1±2.84µs 2.9±6.09µs +38.10%
Array access (Execution) 8.9±8.76µs 8.5±6.97µs -4.49%
Array access (Parser) 17.2±0.99µs 16.9±0.95µs -1.74%
Array creation (Compiler) 3.5±3.91µs 3.8±5.21µs +8.57%
Array creation (Execution) 1024.3±856.55µs 995.5±613.49µs -2.81%
Array creation (Parser) 21.2±1.03µs 21.1±0.96µs -0.47%
Array pop (Compiler) 5.8±6.45µs 7.0±8.38µs +20.69%
Array pop (Execution) 827.8±333.82µs 826.8±291.89µs -0.12%
Array pop (Parser) 195.6±9.51µs 196.7±8.28µs +0.56%
Boolean Object Access (Compiler) 1631.2±1117.08ns 2.2±5.16µs +34.87%
Boolean Object Access (Execution) 7.6±7.42µs 7.7±8.39µs +1.32%
Boolean Object Access (Parser) 19.3±1.32µs 19.4±0.82µs +0.52%
Clean js (Compiler) 7.5±7.33µs 8.3±7.25µs +10.67%
Clean js (Execution) 1173.0±559.04µs 1096.2±130.51µs -6.55%
Clean js (Parser) 44.8±2.22µs 45.5±3.03µs +1.56%
Create Realm 798.1±2006.38µs 756.7±3977.48µs -5.19%
Dynamic Object Property Access (Compiler) 2.6±3.39µs 3.3±3.90µs +26.92%
Dynamic Object Property Access (Execution) 5.5±7.40µs 4.7±5.35µs -14.55%
Dynamic Object Property Access (Parser) 15.9±1.51µs 15.7±1.08µs -1.26%
Fibonacci (Compiler) 5.7±12.31µs 5.9±9.97µs +3.51%
Fibonacci (Execution) 1200.1±1549.34µs 1084.3±1025.94µs -9.65%
Fibonacci (Parser) 24.4±1.22µs 25.1±1.38µs +2.87%
For loop (Compiler) 4.3±7.44µs 4.4±4.60µs +2.33%
For loop (Execution) 24.7±31.23µs 22.5±23.98µs -8.91%
For loop (Parser) 22.3±1.21µs 22.1±1.20µs -0.90%
Mini js (Compiler) 6.6±6.26µs 7.7±8.21µs +16.67%
Mini js (Execution) 1019.6±81.82µs 1039.4±43.33µs +1.94%
Mini js (Parser) 39.5±2.15µs 38.9±3.04µs -1.52%
Number Object Access (Compiler) 1452.0±1234.71ns 2.0±3.53µs +37.74%
Number Object Access (Execution) 5.5±4.40µs 6.0±5.01µs +9.09%
Number Object Access (Parser) 15.5±0.63µs 15.5±0.60µs 0.00%
Object Creation (Compiler) 2.5±2.79µs 3.1±4.43µs +24.00%
Object Creation (Execution) 5.1±8.03µs 4.7±6.08µs -7.84%
Object Creation (Parser) 13.3±0.76µs 13.6±1.10µs +2.26%
RegExp (Compiler) 3.1±5.85µs 3.4±4.10µs +9.68%
RegExp (Execution) 16.8±10.93µs 17.3±13.62µs +2.98%
RegExp (Parser) 14.7±0.70µs 14.6±0.95µs -0.68%
RegExp Creation (Compiler) 2.7±3.41µs 2.9±2.74µs +7.41%
RegExp Creation (Execution) 11.5±10.82µs 11.2±10.62µs -2.61%
RegExp Creation (Parser) 12.4±0.71µs 12.3±0.75µs -0.81%
RegExp Literal (Compiler) 3.0±3.71µs 3.3±3.17µs +10.00%
RegExp Literal (Execution) 16.9±9.43µs 17.5±18.41µs +3.55%
RegExp Literal (Parser) 16.9±0.71µs 16.3±0.85µs -3.55%
RegExp Literal Creation (Compiler) 2.3±2.76µs 2.9±3.19µs +26.09%
RegExp Literal Creation (Execution) 11.0±7.61µs 11.6±12.11µs +5.45%
RegExp Literal Creation (Parser) 14.3±0.75µs 13.7±0.65µs -4.20%
Static Object Property Access (Compiler) 2.3±2.97µs 3.1±4.61µs +34.78%
Static Object Property Access (Execution) 5.6±9.88µs 5.3±8.78µs -5.36%
Static Object Property Access (Parser) 14.4±0.91µs 14.4±0.77µs 0.00%
String Object Access (Compiler) 2.3±2.28µs 2.6±4.60µs +13.04%
String Object Access (Execution) 9.2±6.23µs 9.4±7.04µs +2.17%
String Object Access (Parser) 19.2±1.27µs 20.2±3.39µs +5.21%
String comparison (Compiler) 3.8±3.28µs 4.2±3.56µs +10.53%
String comparison (Execution) 4.9±8.60µs 4.6±5.77µs -6.12%
String comparison (Parser) 17.4±1.05µs 17.0±1.38µs -2.30%
String concatenation (Compiler) 2.9±3.15µs 3.7±4.14µs +27.59%
String concatenation (Execution) 4.6±8.81µs 3.9±5.02µs -15.22%
String concatenation (Parser) 11.7±0.59µs 11.6±0.48µs -0.85%
String copy (Compiler) 3.8±12.51µs 2.5±3.40µs -34.21%
String copy (Execution) 3.7±5.34µs 3.5±4.29µs -5.41%
String copy (Parser) 8.9±0.34µs 8.7±0.53µs -2.25%
Symbols (Compiler) 1785.8±3411.42ns 2.1±3.06µs +17.59%
Symbols (Execution) 3.9±4.65µs 3.9±5.77µs 0.00%
Symbols (Parser) 6.6±0.36µs 6.6±0.49µs 0.00%

@HalidOdat HalidOdat force-pushed the optimization/static-shapes branch 2 times, most recently from 44c0d10 to ef18364 Compare May 5, 2023 17:08
@github-actions
Copy link

github-actions bot commented May 5, 2023

Benchmark for 97d3899

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 675.1±911.86ns 640.3±1075.78ns -5.15%
Arithmetic operations (Execution) 463.1±0.28ns 463.7±0.20ns +0.13%
Arithmetic operations (Parser) 7.6±0.03µs 7.2±0.03µs -5.26%
Array access (Compiler) 2.2±2.38µs 2.0±2.83µs -9.09%
Array access (Execution) 6.5±6.28µs 6.8±7.28µs +4.62%
Array access (Parser) 14.7±0.06µs 14.5±0.02µs -1.36%
Array creation (Compiler) 2.9±2.61µs 2.8±2.58µs -3.45%
Array creation (Execution) 779.7±279.15µs 878.7±510.18µs +12.70%
Array creation (Parser) 17.7±0.06µs 17.4±0.05µs -1.69%
Array pop (Compiler) 4.7±2.75µs 5.2±6.78µs +10.64%
Array pop (Execution) 458.8±6.75µs 499.5±192.62µs +8.87%
Array pop (Parser) 162.4±0.20µs 160.4±0.15µs -1.23%
Boolean Object Access (Compiler) 1376.6±991.05ns 1284.3±742.11ns -6.70%
Boolean Object Access (Execution) 6.7±4.42µs 7.9±11.92µs +17.91%
Boolean Object Access (Parser) 16.0±0.04µs 16.0±0.05µs 0.00%
Clean js (Compiler) 7.3±8.53µs 6.1±4.53µs -16.44%
Clean js (Execution) 834.4±230.65µs 837.4±4.18µs +0.36%
Clean js (Parser) 36.5±0.09µs 36.4±0.09µs -0.27%
Create Realm 675.0±2807.50µs 326.3±803.97µs -51.66%
Dynamic Object Property Access (Compiler) 2.8±4.50µs 2.5±3.61µs -10.71%
Dynamic Object Property Access (Execution) 4.2±4.75µs 4.2±4.82µs 0.00%
Dynamic Object Property Access (Parser) 13.1±0.03µs 12.9±0.04µs -1.53%
Fibonacci (Compiler) 4.7±3.78µs 4.6±3.83µs -2.13%
Fibonacci (Execution) 862.0±786.77µs 915.7±746.32µs +6.23%
Fibonacci (Parser) 20.3±0.05µs 20.2±0.04µs -0.49%
For loop (Compiler) 3.3±2.75µs 3.5±4.95µs +6.06%
For loop (Execution) 17.5±13.51µs 20.8±26.34µs +18.86%
For loop (Parser) 18.6±0.03µs 18.6±0.04µs 0.00%
Mini js (Compiler) 6.6±7.18µs 6.2±5.58µs -6.06%
Mini js (Execution) 768.3±4.76µs 784.5±4.89µs +2.11%
Mini js (Parser) 31.9±0.06µs 32.1±0.08µs +0.63%
Number Object Access (Compiler) 1394.6±1960.22ns 1300.0±831.17ns -6.78%
Number Object Access (Execution) 5.6±5.58µs 5.4±3.43µs -3.57%
Number Object Access (Parser) 12.9±0.02µs 12.7±0.04µs -1.55%
Object Creation (Compiler) 2.6±4.99µs 2.3±3.07µs -11.54%
Object Creation (Execution) 5.3±16.87µs 4.3±6.75µs -18.87%
Object Creation (Parser) 11.2±0.02µs 11.1±0.03µs -0.89%
RegExp (Compiler) 2.5±2.74µs 2.5±3.65µs 0.00%
RegExp (Execution) 13.1±10.94µs 12.5±6.64µs -4.58%
RegExp (Parser) 12.2±0.10µs 12.0±0.05µs -1.64%
RegExp Creation (Compiler) 2.3±2.82µs 2.0±2.28µs -13.04%
RegExp Creation (Execution) 8.5±5.37µs 9.1±7.91µs +7.06%
RegExp Creation (Parser) 10.2±0.02µs 10.1±0.03µs -0.98%
RegExp Literal (Compiler) 2.2±2.39µs 2.3±2.51µs +4.55%
RegExp Literal (Execution) 13.0±9.85µs 13.2±9.66µs +1.54%
RegExp Literal (Parser) 13.5±0.03µs 13.5±0.03µs 0.00%
RegExp Literal Creation (Compiler) 2.9±9.67µs 1969.5±2456.73ns -32.09%
RegExp Literal Creation (Execution) 8.4±4.91µs 8.2±4.18µs -2.38%
RegExp Literal Creation (Parser) 11.5±0.03µs 11.6±0.07µs +0.87%
Static Object Property Access (Compiler) 2.4±2.85µs 2.3±2.93µs -4.17%
Static Object Property Access (Execution) 4.3±6.34µs 4.2±5.58µs -2.33%
Static Object Property Access (Parser) 12.1±0.07µs 11.9±0.03µs -1.65%
String Object Access (Compiler) 1735.4±1654.96ns 1735.6±1576.95ns +0.01%
String Object Access (Execution) 8.8±5.94µs 9.3±7.61µs +5.68%
String Object Access (Parser) 16.6±0.28µs 16.1±0.06µs -3.01%
String comparison (Compiler) 4.0±3.77µs 4.9±12.02µs +22.50%
String comparison (Execution) 3.6±3.20µs 3.8±4.19µs +5.56%
String comparison (Parser) 14.6±0.06µs 14.5±0.03µs -0.68%
String concatenation (Compiler) 2.7±2.50µs 3.1±3.94µs +14.81%
String concatenation (Execution) 3.1±3.25µs 3.3±3.33µs +6.45%
String concatenation (Parser) 9.9±0.02µs 9.8±0.02µs -1.01%
String copy (Compiler) 2.3±2.11µs 2.6±4.33µs +13.04%
String copy (Execution) 3.7±10.28µs 2.9±3.63µs -21.62%
String copy (Parser) 7.5±0.02µs 7.5±0.01µs 0.00%
Symbols (Compiler) 1494.7±1962.53ns 1517.7±2042.76ns +1.54%
Symbols (Execution) 3.1±3.58µs 3.0±3.61µs -3.23%
Symbols (Parser) 5.6±0.01µs 5.5±0.02µs -1.79%

@github-actions
Copy link

Benchmark for 97c7fd2

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 20.4±0.30ns 20.8±0.28ns +1.96%
Arithmetic operations (Execution) 511.6±0.37ns 506.5±0.58ns -1.00%
Arithmetic operations (Parser) 8.4±0.18µs 22.2±129.63µs +164.29%
Array access (Compiler) 20.2±0.38ns 20.4±0.37ns +0.99%
Array access (Execution) 7.4±8.18µs 6.9±5.80µs -6.76%
Array access (Parser) 15.4±0.31µs 15.7±0.25µs +1.95%
Array creation (Compiler) 20.2±0.40ns 20.4±0.39ns +0.99%
Array creation (Execution) 997.1±674.03µs 949.6±543.94µs -4.76%
Array creation (Parser) 18.5±0.29µs 19.3±0.15µs +4.32%
Array pop (Compiler) 20.3±0.37ns 20.4±0.51ns +0.49%
Array pop (Execution) 473.0±20.54µs 518.0±288.08µs +9.51%
Array pop (Parser) 172.9±4.22µs 173.9±2.24µs +0.58%
Boolean Object Access (Compiler) 21.6±0.31ns 20.7±0.25ns -4.17%
Boolean Object Access (Execution) 7.4±5.06µs 8.1±8.60µs +9.46%
Boolean Object Access (Parser) 17.4±0.15µs 17.7±0.07µs +1.72%
Clean js (Compiler) 20.3±0.38ns 20.5±0.37ns +0.99%
Clean js (Execution) 863.6±252.60µs 867.8±275.38µs +0.49%
Clean js (Parser) 41.0±2.39µs 40.6±0.34µs -0.98%
Create Realm 691.6±2544.39µs 337.2±954.51µs -51.24%
Dynamic Object Property Access (Compiler) 20.3±0.36ns 20.4±0.31ns +0.49%
Dynamic Object Property Access (Execution) 4.8±6.07µs 4.8±5.58µs 0.00%
Dynamic Object Property Access (Parser) 13.9±0.37µs 14.0±0.09µs +0.72%
Fibonacci (Compiler) 20.1±0.38ns 20.3±0.34ns +1.00%
Fibonacci (Execution) 1076.0±1674.17µs 1159.8±1916.25µs +7.79%
Fibonacci (Parser) 21.4±0.23µs 22.2±0.45µs +3.74%
For loop (Compiler) 20.2±0.28ns 20.7±0.34ns +2.48%
For loop (Execution) 27.4±30.41µs 28.0±32.79µs +2.19%
For loop (Parser) 19.4±0.34µs 19.4±0.32µs 0.00%
Mini js (Compiler) 20.1±0.39ns 20.4±0.43ns +1.49%
Mini js (Execution) 776.6±3.20µs 781.7±2.78µs +0.66%
Mini js (Parser) 41.6±5.62µs 36.0±0.26µs -13.46%
Number Object Access (Compiler) 20.3±0.39ns 20.5±0.38ns +0.99%
Number Object Access (Execution) 5.8±3.59µs 6.3±5.82µs +8.62%
Number Object Access (Parser) 140.1±1257.83µs 14.1±0.04µs -89.94%
Object Creation (Compiler) 20.0±0.35ns 22.1±0.32ns +10.50%
Object Creation (Execution) 4.5±5.27µs 4.5±5.43µs 0.00%
Object Creation (Parser) 11.6±0.17µs 12.0±0.13µs +3.45%
RegExp (Compiler) 20.4±0.33ns 22.0±0.23ns +7.84%
RegExp (Execution) 12.6±6.32µs 13.4±10.57µs +6.35%
RegExp (Parser) 12.6±0.19µs 13.1±0.12µs +3.97%
RegExp Creation (Compiler) 20.2±0.43ns 20.7±0.36ns +2.48%
RegExp Creation (Execution) 9.7±9.23µs 9.2±6.45µs -5.15%
RegExp Creation (Parser) 10.6±0.16µs 65.3±541.74µs +516.04%
RegExp Literal (Compiler) 20.3±0.32ns 20.4±0.35ns +0.49%
RegExp Literal (Execution) 17.0±44.66µs 13.4±10.47µs -21.18%
RegExp Literal (Parser) 14.3±0.32µs 14.4±0.21µs +0.70%
RegExp Literal Creation (Compiler) 20.3±0.34ns 20.7±0.39ns +1.97%
RegExp Literal Creation (Execution) 9.5±8.71µs 8.9±6.41µs -6.32%
RegExp Literal Creation (Parser) 12.1±0.16µs 12.5±0.13µs +3.31%
Static Object Property Access (Compiler) 20.1±0.36ns 20.8±0.25ns +3.48%
Static Object Property Access (Execution) 4.7±5.72µs 4.6±5.41µs -2.13%
Static Object Property Access (Parser) 15.2±23.42µs 12.8±0.08µs -15.79%
String Object Access (Compiler) 20.3±0.36ns 20.8±0.60ns +2.46%
String Object Access (Execution) 10.2±9.59µs 11.5±19.64µs +12.75%
String Object Access (Parser) 17.4±0.03µs 17.6±0.12µs +1.15%
String comparison (Compiler) 20.2±0.38ns 20.4±0.38ns +0.99%
String comparison (Execution) 4.3±4.77µs 4.1±4.04µs -4.65%
String comparison (Parser) 16.4±1.03µs 16.6±0.60µs +1.22%
String concatenation (Compiler) 20.0±0.34ns 20.8±0.25ns +4.00%
String concatenation (Execution) 4.2±7.25µs 4.0±5.44µs -4.76%
String concatenation (Parser) 10.6±0.18µs 12.3±2.00µs +16.04%
String copy (Compiler) 20.0±0.35ns 20.3±0.35ns +1.50%
String copy (Execution) 3.3±3.22µs 3.6±5.48µs +9.09%
String copy (Parser) 8.4±0.54µs 8.3±0.02µs -1.19%
Symbols (Compiler) 20.2±0.44ns 20.3±0.37ns +0.50%
Symbols (Execution) 2.9±0.09µs 3.5±3.92µs +20.69%
Symbols (Parser) 5.9±0.09µs 5.9±0.06µs 0.00%

@github-actions
Copy link

Benchmark for ad894db

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 18.6±0.01ns 18.6±0.02ns 0.00%
Arithmetic operations (Execution) 514.3±0.37ns 519.5±0.26ns +1.01%
Arithmetic operations (Parser) 22.5±128.06µs 8.6±0.02µs -61.78%
Array access (Compiler) 18.6±0.04ns 18.6±0.05ns 0.00%
Array access (Execution) 7.2±7.79µs 6.9±7.48µs -4.17%
Array access (Parser) 14.4±0.23µs 14.9±0.17µs +3.47%
Array creation (Compiler) 18.8±0.02ns 18.6±0.01ns -1.06%
Array creation (Execution) 1005.8±810.88µs 2.3±12.73ms +128.67%
Array creation (Parser) 17.7±0.41µs 18.3±0.11µs +3.39%
Array pop (Compiler) 18.8±0.02ns 18.6±0.01ns -1.06%
Array pop (Execution) 445.7±9.13µs 469.3±323.19µs +5.30%
Array pop (Parser) 164.5±3.28µs 167.4±2.44µs +1.76%
Boolean Object Access (Compiler) 18.6±0.01ns 18.6±0.02ns 0.00%
Boolean Object Access (Execution) 7.3±6.82µs 7.3±5.30µs 0.00%
Boolean Object Access (Parser) 17.0±0.49µs 17.1±0.06µs +0.59%
Clean js (Compiler) 18.6±0.01ns 18.6±0.03ns 0.00%
Clean js (Execution) 843.2±378.21µs 832.9±363.29µs -1.22%
Clean js (Parser) 38.5±0.74µs 45.3±4.00µs +17.66%
Create Realm 840.9±3823.18µs 345.4±927.19µs -58.92%
Dynamic Object Property Access (Compiler) 18.6±0.03ns 18.5±0.02ns -0.54%
Dynamic Object Property Access (Execution) 4.8±6.50µs 5.0±7.67µs +4.17%
Dynamic Object Property Access (Parser) 13.3±0.59µs 13.5±0.08µs +1.50%
Fibonacci (Compiler) 18.6±0.05ns 18.6±0.14ns 0.00%
Fibonacci (Execution) 1081.2±1932.18µs 988.5±1258.13µs -8.57%
Fibonacci (Parser) 20.6±0.41µs 20.4±0.52µs -0.97%
For loop (Compiler) 18.6±0.07ns 18.7±0.62ns +0.54%
For loop (Execution) 51.1±238.80µs 35.9±81.57µs -29.75%
For loop (Parser) 18.7±0.45µs 19.4±0.20µs +3.74%
Mini js (Compiler) 18.6±0.04ns 18.6±0.17ns 0.00%
Mini js (Execution) 741.4±6.57µs 740.0±2.86µs -0.19%
Mini js (Parser) 34.2±0.69µs 39.9±4.14µs +16.67%
Number Object Access (Compiler) 18.6±0.03ns 18.6±0.01ns 0.00%
Number Object Access (Execution) 5.6±4.52µs 5.6±4.10µs 0.00%
Number Object Access (Parser) 13.5±0.37µs 13.8±0.03µs +2.22%
Object Creation (Compiler) 18.8±1.64ns 18.6±0.02ns -1.06%
Object Creation (Execution) 4.5±6.34µs 4.9±8.20µs +8.89%
Object Creation (Parser) 11.1±0.31µs 11.2±0.22µs +0.90%
RegExp (Compiler) 18.6±0.03ns 18.6±0.02ns 0.00%
RegExp (Execution) 13.9±14.56µs 12.8±7.99µs -7.91%
RegExp (Parser) 12.3±0.20µs 12.2±0.28µs -0.81%
RegExp Creation (Compiler) 18.6±0.13ns 18.6±0.01ns 0.00%
RegExp Creation (Execution) 8.9±8.11µs 14.3±55.08µs +60.67%
RegExp Creation (Parser) 10.5±1.23µs 12.7±21.08µs +20.95%
RegExp Literal (Compiler) 18.6±0.04ns 18.6±0.02ns 0.00%
RegExp Literal (Execution) 13.8±14.37µs 12.8±7.99µs -7.25%
RegExp Literal (Parser) 14.1±0.27µs 13.7±0.29µs -2.84%
RegExp Literal Creation (Compiler) 18.6±0.04ns 18.6±0.01ns 0.00%
RegExp Literal Creation (Execution) 9.1±7.55µs 9.3±7.29µs +2.20%
RegExp Literal Creation (Parser) 12.3±0.34µs 11.9±0.09µs -3.25%
Static Object Property Access (Compiler) 18.6±0.03ns 18.6±0.14ns 0.00%
Static Object Property Access (Execution) 4.8±6.91µs 4.4±5.32µs -8.33%
Static Object Property Access (Parser) 12.0±0.57µs 12.3±0.06µs +2.50%
String Object Access (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
String Object Access (Execution) 8.7±5.77µs 9.1±6.38µs +4.60%
String Object Access (Parser) 17.2±0.16µs 16.9±0.17µs -1.74%
String comparison (Compiler) 18.7±0.02ns 18.6±0.04ns -0.53%
String comparison (Execution) 4.3±4.72µs 4.6±6.66µs +6.98%
String comparison (Parser) 116.3±1008.16µs 15.5±1.22µs -86.67%
String concatenation (Compiler) 18.6±0.16ns 18.6±0.01ns 0.00%
String concatenation (Execution) 4.3±6.96µs 3.8±5.13µs -11.63%
String concatenation (Parser) 11.2±2.80µs 11.2±1.05µs 0.00%
String copy (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
String copy (Execution) 3.7±5.20µs 3.7±6.01µs 0.00%
String copy (Parser) 7.7±0.14µs 7.6±0.46µs -1.30%
Symbols (Compiler) 18.6±0.04ns 18.6±0.01ns 0.00%
Symbols (Execution) 4.1±9.34µs 3.3±0.66µs -19.51%
Symbols (Parser) 5.6±0.13µs 5.5±0.11µs -1.79%

@github-actions
Copy link

Benchmark for dae4b43

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 20.5±1.86ns 22.2±1.81ns +8.29%
Arithmetic operations (Execution) 607.7±42.16ns 600.6±30.92ns -1.17%
Arithmetic operations (Parser) 9.6±0.58µs 10.9±0.47µs +13.54%
Array access (Compiler) 20.2±1.01ns 22.3±3.50ns +10.40%
Array access (Execution) 8.3±10.34µs 8.0±8.38µs -3.61%
Array access (Parser) 18.6±1.69µs 19.7±1.00µs +5.91%
Array creation (Compiler) 20.1±1.04ns 21.9±1.20ns +8.96%
Array creation (Execution) 1168.5±638.52µs 1221.7±1001.35µs +4.55%
Array creation (Parser) 21.6±1.29µs 25.7±1.37µs +18.98%
Array pop (Compiler) 20.3±1.26ns 21.6±0.80ns +6.40%
Array pop (Execution) 550.8±497.45µs 509.6±48.18µs -7.48%
Array pop (Parser) 196.5±16.24µs 223.6±11.22µs +13.79%
Boolean Object Access (Compiler) 20.8±1.12ns 21.8±0.99ns +4.81%
Boolean Object Access (Execution) 7.3±4.81µs 10.2±21.14µs +39.73%
Boolean Object Access (Parser) 19.4±1.35µs 22.9±2.40µs +18.04%
Clean js (Compiler) 19.9±0.95ns 21.8±0.88ns +9.55%
Clean js (Execution) 931.5±304.86µs 960.7±348.02µs +3.13%
Clean js (Parser) 48.7±5.17µs 52.7±7.70µs +8.21%
Create Realm 949.8±3626.66µs 433.0±1316.13µs -54.41%
Dynamic Object Property Access (Compiler) 21.7±1.36ns 21.8±1.05ns +0.46%
Dynamic Object Property Access (Execution) 5.6±9.05µs 6.0±11.05µs +7.14%
Dynamic Object Property Access (Parser) 16.1±1.28µs 18.4±1.23µs +14.29%
Fibonacci (Compiler) 20.5±1.19ns 21.9±0.97ns +6.83%
Fibonacci (Execution) 1164.3±1162.16µs 1379.6±2847.29µs +18.49%
Fibonacci (Parser) 31.5±44.69µs 30.1±1.67µs -4.44%
For loop (Compiler) 20.1±1.02ns 23.3±1.66ns +15.92%
For loop (Execution) 30.8±35.88µs 31.1±37.57µs +0.97%
For loop (Parser) 23.8±2.62µs 25.6±1.36µs +7.56%
Mini js (Compiler) 20.5±1.04ns 21.8±1.08ns +6.34%
Mini js (Execution) 862.6±119.41µs 862.7±33.63µs +0.01%
Mini js (Parser) 49.4±6.42µs 53.3±6.15µs +7.89%
Number Object Access (Compiler) 20.6±1.23ns 21.6±1.11ns +4.85%
Number Object Access (Execution) 5.8±4.02µs 6.7±6.38µs +15.52%
Number Object Access (Parser) 15.9±0.69µs 18.8±2.37µs +18.24%
Object Creation (Compiler) 21.5±1.46ns 22.2±1.83ns +3.26%
Object Creation (Execution) 5.5±9.65µs 4.8±5.72µs -12.73%
Object Creation (Parser) 14.6±1.23µs 15.8±0.81µs +8.22%
RegExp (Compiler) 20.2±1.04ns 21.9±1.31ns +8.42%
RegExp (Execution) 16.8±10.66µs 17.0±11.83µs +1.19%
RegExp (Parser) 16.9±1.56µs 16.1±0.82µs -4.73%
RegExp Creation (Compiler) 20.1±0.88ns 21.8±1.35ns +8.46%
RegExp Creation (Execution) 12.6±17.43µs 11.3±8.66µs -10.32%
RegExp Creation (Parser) 12.1±1.23µs 32.3±182.49µs +166.94%
RegExp Literal (Compiler) 20.1±0.99ns 21.8±0.90ns +8.46%
RegExp Literal (Execution) 18.5±23.54µs 17.0±9.51µs -8.11%
RegExp Literal (Parser) 17.0±2.75µs 19.3±1.39µs +13.53%
RegExp Literal Creation (Compiler) 21.7±1.05ns 22.0±1.47ns +1.38%
RegExp Literal Creation (Execution) 10.3±6.22µs 10.4±7.36µs +0.97%
RegExp Literal Creation (Parser) 14.9±0.86µs 16.4±0.86µs +10.07%
Static Object Property Access (Compiler) 22.0±1.82ns 21.7±0.81ns -1.36%
Static Object Property Access (Execution) 4.9±6.02µs 5.1±6.26µs +4.08%
Static Object Property Access (Parser) 14.7±0.85µs 16.6±0.69µs +12.93%
String Object Access (Compiler) 20.3±1.16ns 21.7±1.07ns +6.90%
String Object Access (Execution) 12.1±23.42µs 11.2±8.43µs -7.44%
String Object Access (Parser) 20.3±1.14µs 22.1±1.23µs +8.87%
String comparison (Compiler) 20.4±1.05ns 21.8±1.09ns +6.86%
String comparison (Execution) 5.4±8.50µs 4.8±5.40µs -11.11%
String comparison (Parser) 18.2±0.89µs 20.2±1.73µs +10.99%
String concatenation (Compiler) 20.3±0.89ns 21.7±1.25ns +6.90%
String concatenation (Execution) 4.4±5.73µs 4.5±6.82µs +2.27%
String concatenation (Parser) 11.6±1.08µs 13.6±1.03µs +17.24%
String copy (Compiler) 20.5±1.24ns 22.0±1.34ns +7.32%
String copy (Execution) 4.1±6.15µs 4.3±8.51µs +4.88%
String copy (Parser) 35.5±257.10µs 76.7±664.88µs +116.06%
Symbols (Compiler) 23.3±0.85ns 21.8±0.88ns -6.44%
Symbols (Execution) 4.3±1.25µs 3.1±0.53µs -27.91%
Symbols (Parser) 7.0±0.40µs 7.0±0.35µs 0.00%

@github-actions
Copy link

Benchmark for 01cc3f8

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
Arithmetic operations (Execution) 514.1±0.36ns 520.2±0.45ns +1.19%
Arithmetic operations (Parser) 17.4±86.30µs 8.8±0.97µs -49.43%
Array access (Compiler) 18.6±0.02ns 18.6±0.04ns 0.00%
Array access (Execution) 7.0±7.73µs 7.0±7.13µs 0.00%
Array access (Parser) 14.6±0.34µs 15.0±0.26µs +2.74%
Array creation (Compiler) 18.6±0.01ns 18.6±0.17ns 0.00%
Array creation (Execution) 1028.5±789.50µs 980.3±772.01µs -4.69%
Array creation (Parser) 17.9±0.52µs 18.6±0.10µs +3.91%
Array pop (Compiler) 18.6±0.22ns 18.6±0.03ns 0.00%
Array pop (Execution) 434.5±8.19µs 456.0±186.44µs +4.95%
Array pop (Parser) 169.0±4.26µs 173.0±11.16µs +2.37%
Boolean Object Access (Compiler) 18.6±0.07ns 18.6±0.02ns 0.00%
Boolean Object Access (Execution) 8.3±15.65µs 7.2±5.28µs -13.25%
Boolean Object Access (Parser) 16.4±0.34µs 17.3±0.03µs +5.49%
Clean js (Compiler) 18.6±0.03ns 18.6±0.01ns 0.00%
Clean js (Execution) 859.9±574.21µs 811.0±293.44µs -5.69%
Clean js (Parser) 38.8±0.71µs 38.4±0.80µs -1.03%
Create Realm 735.1±3160.59µs 361.5±1126.08µs -50.82%
Dynamic Object Property Access (Compiler) 18.6±0.03ns 18.6±0.01ns 0.00%
Dynamic Object Property Access (Execution) 4.7±6.90µs 4.6±6.72µs -2.13%
Dynamic Object Property Access (Parser) 12.9±0.40µs 13.5±0.07µs +4.65%
Fibonacci (Compiler) 18.6±0.09ns 18.6±0.05ns 0.00%
Fibonacci (Execution) 1113.2±2072.28µs 923.8±1027.86µs -17.01%
Fibonacci (Parser) 20.7±0.34µs 21.2±0.52µs +2.42%
For loop (Compiler) 18.6±0.16ns 18.6±0.01ns 0.00%
For loop (Execution) 29.4±40.57µs 29.4±44.84µs 0.00%
For loop (Parser) 18.5±0.48µs 18.7±0.42µs +1.08%
Mini js (Compiler) 18.6±0.02ns 18.6±0.03ns 0.00%
Mini js (Execution) 756.9±3.31µs 730.4±2.38µs -3.50%
Mini js (Parser) 34.5±1.12µs 34.5±0.58µs 0.00%
Number Object Access (Compiler) 18.6±0.01ns 18.7±0.02ns +0.54%
Number Object Access (Execution) 5.9±6.33µs 6.3±8.95µs +6.78%
Number Object Access (Parser) 13.5±0.25µs 13.9±0.25µs +2.96%
Object Creation (Compiler) 18.7±0.01ns 18.6±0.04ns -0.53%
Object Creation (Execution) 4.4±6.27µs 5.5±15.23µs +25.00%
Object Creation (Parser) 11.2±0.43µs 11.6±0.14µs +3.57%
RegExp (Compiler) 18.6±0.02ns 18.6±0.01ns 0.00%
RegExp (Execution) 14.0±16.65µs 13.3±10.91µs -5.00%
RegExp (Parser) 12.3±0.23µs 12.7±0.18µs +3.25%
RegExp Creation (Compiler) 18.6±0.10ns 18.6±0.05ns 0.00%
RegExp Creation (Execution) 9.2±8.78µs 8.5±6.09µs -7.61%
RegExp Creation (Parser) 10.4±0.46µs 10.5±0.19µs +0.96%
RegExp Literal (Compiler) 18.6±0.01ns 18.6±0.02ns 0.00%
RegExp Literal (Execution) 14.0±16.57µs 13.3±10.42µs -5.00%
RegExp Literal (Parser) 14.1±0.46µs 13.8±0.33µs -2.13%
RegExp Literal Creation (Compiler) 18.6±0.06ns 18.6±0.01ns 0.00%
RegExp Literal Creation (Execution) 9.3±8.70µs 9.7±12.84µs +4.30%
RegExp Literal Creation (Parser) 12.2±0.18µs 11.5±0.37µs -5.74%
Static Object Property Access (Compiler) 18.6±0.01ns 18.7±0.01ns +0.54%
Static Object Property Access (Execution) 4.6±6.77µs 4.3±5.15µs -6.52%
Static Object Property Access (Parser) 11.9±0.34µs 12.3±0.13µs +3.36%
String Object Access (Compiler) 18.6±0.01ns 18.6±0.02ns 0.00%
String Object Access (Execution) 9.2±6.70µs 9.1±7.03µs -1.09%
String Object Access (Parser) 16.9±0.02µs 17.3±0.15µs +2.37%
String comparison (Compiler) 18.6±0.04ns 18.6±0.02ns 0.00%
String comparison (Execution) 4.3±5.31µs 4.1±4.13µs -4.65%
String comparison (Parser) 15.5±0.06µs 14.7±0.34µs -5.16%
String concatenation (Compiler) 18.6±0.04ns 18.6±0.04ns 0.00%
String concatenation (Execution) 4.2±7.81µs 3.7±4.34µs -11.90%
String concatenation (Parser) 11.1±0.88µs 10.6±0.41µs -4.50%
String copy (Compiler) 18.6±0.04ns 18.6±0.02ns 0.00%
String copy (Execution) 3.7±6.87µs 3.6±6.23µs -2.70%
String copy (Parser) 7.8±0.02µs 7.7±0.08µs -1.28%
Symbols (Compiler) 18.6±0.01ns 18.6±0.02ns 0.00%
Symbols (Execution) 3.9±8.10µs 3.4±4.80µs -12.82%
Symbols (Parser) 5.6±0.09µs 6.1±5.13µs +8.93%

@github-actions
Copy link

Benchmark for 0be614b

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
Arithmetic operations (Execution) 524.2±17.46ns 532.9±0.20ns +1.66%
Arithmetic operations (Parser) 15.8±69.75µs 8.7±0.12µs -44.94%
Array access (Compiler) 18.6±0.02ns 18.8±0.03ns +1.08%
Array access (Execution) 7.3±9.66µs 7.4±10.82µs +1.37%
Array access (Parser) 14.9±0.82µs 15.3±0.17µs +2.68%
Array creation (Compiler) 18.6±0.01ns 18.6±0.03ns 0.00%
Array creation (Execution) 1032.7±940.45µs 1002.2±1034.80µs -2.95%
Array creation (Parser) 17.8±0.36µs 18.8±0.03µs +5.62%
Array pop (Compiler) 18.6±0.01ns 19.5±0.01ns +4.84%
Array pop (Execution) 443.5±9.61µs 451.5±225.92µs +1.80%
Array pop (Parser) 169.1±12.62µs 168.5±2.40µs -0.35%
Boolean Object Access (Compiler) 19.6±0.01ns 18.6±0.01ns -5.10%
Boolean Object Access (Execution) 10.4±34.59µs 7.4±6.00µs -28.85%
Boolean Object Access (Parser) 16.9±0.33µs 49.6±331.16µs +193.49%
Clean js (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
Clean js (Execution) 787.4±10.57µs 833.4±365.04µs +5.84%
Clean js (Parser) 38.8±0.77µs 39.8±0.53µs +2.58%
Create Realm 751.4±3158.63µs 349.1±1113.02µs -53.54%
Dynamic Object Property Access (Compiler) 18.6±0.01ns 18.7±0.01ns +0.54%
Dynamic Object Property Access (Execution) 4.8±7.59µs 4.7±6.24µs -2.08%
Dynamic Object Property Access (Parser) 13.2±0.41µs 13.8±0.20µs +4.55%
Fibonacci (Compiler) 18.6±0.06ns 18.6±0.11ns 0.00%
Fibonacci (Execution) 1099.2±2311.76µs 907.7±1102.74µs -17.42%
Fibonacci (Parser) 20.9±0.47µs 21.6±0.29µs +3.35%
For loop (Compiler) 18.6±0.04ns 18.6±0.10ns 0.00%
For loop (Execution) 28.3±39.28µs 26.3±37.42µs -7.07%
For loop (Parser) 18.5±0.52µs 19.2±0.61µs +3.78%
Mini js (Compiler) 18.6±0.03ns 18.6±0.01ns 0.00%
Mini js (Execution) 735.2±7.37µs 736.7±2.53µs +0.20%
Mini js (Parser) 34.4±0.59µs 37.3±3.20µs +8.43%
Number Object Access (Compiler) 18.6±0.02ns 18.6±0.05ns 0.00%
Number Object Access (Execution) 5.9±6.65µs 6.2±7.66µs +5.08%
Number Object Access (Parser) 13.6±0.28µs 14.0±0.04µs +2.94%
Object Creation (Compiler) 18.6±0.01ns 18.6±0.05ns 0.00%
Object Creation (Execution) 4.4±6.49µs 12.8±87.88µs +190.91%
Object Creation (Parser) 11.3±0.33µs 11.7±0.11µs +3.54%
RegExp (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
RegExp (Execution) 14.8±25.91µs 16.1±35.82µs +8.78%
RegExp (Parser) 12.5±0.24µs 12.7±0.16µs +1.60%
RegExp Creation (Compiler) 18.6±0.11ns 18.6±0.01ns 0.00%
RegExp Creation (Execution) 9.0±10.23µs 9.3±9.08µs +3.33%
RegExp Creation (Parser) 10.5±0.38µs 10.4±0.22µs -0.95%
RegExp Literal (Compiler) 18.6±0.02ns 18.6±0.01ns 0.00%
RegExp Literal (Execution) 12.1±6.88µs 15.0±24.82µs +23.97%
RegExp Literal (Parser) 14.2±0.29µs 14.0±0.10µs -1.41%
RegExp Literal Creation (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
RegExp Literal Creation (Execution) 9.3±9.67µs 9.4±8.92µs +1.08%
RegExp Literal Creation (Parser) 12.3±0.21µs 11.9±0.13µs -3.25%
Static Object Property Access (Compiler) 18.6±0.01ns 18.7±0.31ns +0.54%
Static Object Property Access (Execution) 4.6±7.04µs 4.4±5.38µs -4.35%
Static Object Property Access (Parser) 12.1±0.69µs 12.6±0.07µs +4.13%
String Object Access (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
String Object Access (Execution) 9.0±6.43µs 9.9±12.43µs +10.00%
String Object Access (Parser) 17.3±0.07µs 16.8±0.31µs -2.89%
String comparison (Compiler) 18.6±0.01ns 18.6±0.05ns 0.00%
String comparison (Execution) 4.2±4.94µs 4.3±5.13µs +2.38%
String comparison (Parser) 15.6±0.05µs 15.6±0.19µs 0.00%
String concatenation (Compiler) 18.6±0.01ns 18.6±0.12ns 0.00%
String concatenation (Execution) 3.5±4.04µs 3.9±5.44µs +11.43%
String concatenation (Parser) 11.3±2.37µs 10.4±0.25µs -7.96%
String copy (Compiler) 18.6±0.01ns 18.5±0.01ns -0.54%
String copy (Execution) 3.7±6.87µs 4.2±9.64µs +13.51%
String copy (Parser) 7.7±0.10µs 7.9±0.04µs +2.60%
Symbols (Compiler) 18.6±0.06ns 18.6±0.02ns 0.00%
Symbols (Execution) 3.7±8.09µs 2.9±0.26µs -21.62%
Symbols (Parser) 5.6±0.24µs 6.1±5.09µs +8.93%

@HalidOdat
Copy link
Member Author

Finished converting all the builtins to have static shapes, in total eliminated 188 unique shapes per Realm. There is only one unique shape left on the global object, since it can be overridden with HostHooks and changes often.

@github-actions
Copy link

Benchmark for ec5e9ff

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 18.6±0.03ns 18.6±0.01ns 0.00%
Arithmetic operations (Execution) 515.9±0.31ns 532.7±1.07ns +3.26%
Arithmetic operations (Parser) 14.7±60.52µs 8.8±0.06µs -40.14%
Array access (Compiler) 18.6±0.05ns 18.7±0.36ns +0.54%
Array access (Execution) 7.5±10.78µs 6.9±7.28µs -8.00%
Array access (Parser) 14.8±0.25µs 15.3±0.14µs +3.38%
Array creation (Compiler) 18.6±0.02ns 18.6±0.04ns 0.00%
Array creation (Execution) 1045.3±976.19µs 1638.9±6919.06µs +56.79%
Array creation (Parser) 17.9±0.31µs 19.1±0.11µs +6.70%
Array pop (Compiler) 18.6±0.04ns 18.6±0.01ns 0.00%
Array pop (Execution) 443.0±9.94µs 492.6±591.25µs +11.20%
Array pop (Parser) 168.9±8.38µs 176.6±15.26µs +4.56%
Boolean Object Access (Compiler) 18.6±0.06ns 18.6±0.29ns 0.00%
Boolean Object Access (Execution) 7.3±6.54µs 8.2±13.35µs +12.33%
Boolean Object Access (Parser) 16.9±0.33µs 26.9±100.12µs +59.17%
Clean js (Compiler) 18.6±0.04ns 18.6±0.01ns 0.00%
Clean js (Execution) 841.0±375.87µs 853.8±615.43µs +1.52%
Clean js (Parser) 38.9±0.83µs 39.5±0.39µs +1.54%
Create Realm 828.2±3807.63µs 372.1±1205.04µs -55.07%
Dynamic Object Property Access (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
Dynamic Object Property Access (Execution) 4.3±5.84µs 4.9±7.07µs +13.95%
Dynamic Object Property Access (Parser) 13.2±0.41µs 13.8±0.18µs +4.55%
Fibonacci (Compiler) 18.6±0.03ns 18.6±0.03ns 0.00%
Fibonacci (Execution) 1054.6±1683.16µs 1121.9±1979.98µs +6.38%
Fibonacci (Parser) 20.9±0.43µs 21.7±0.28µs +3.83%
For loop (Compiler) 18.6±0.03ns 18.6±0.05ns 0.00%
For loop (Execution) 27.6±44.55µs 29.7±47.87µs +7.61%
For loop (Parser) 18.6±0.62µs 19.2±0.48µs +3.23%
Mini js (Compiler) 18.6±0.03ns 18.6±0.02ns 0.00%
Mini js (Execution) 745.1±27.00µs 739.7±2.42µs -0.72%
Mini js (Parser) 34.6±1.12µs 39.7±20.72µs +14.74%
Number Object Access (Compiler) 18.6±0.07ns 18.6±0.03ns 0.00%
Number Object Access (Execution) 5.7±4.73µs 6.1±6.98µs +7.02%
Number Object Access (Parser) 13.7±0.43µs 13.9±0.08µs +1.46%
Object Creation (Compiler) 18.6±0.04ns 18.6±0.02ns 0.00%
Object Creation (Execution) 4.3±6.23µs 4.7±7.76µs +9.30%
Object Creation (Parser) 11.4±0.72µs 11.8±0.10µs +3.51%
RegExp (Compiler) 18.6±0.04ns 18.6±0.02ns 0.00%
RegExp (Execution) 15.3±29.38µs 13.9±12.55µs -9.15%
RegExp (Parser) 12.4±0.21µs 12.8±0.09µs +3.23%
RegExp Creation (Compiler) 18.6±0.02ns 18.6±0.02ns 0.00%
RegExp Creation (Execution) 9.6±12.78µs 9.6±8.31µs 0.00%
RegExp Creation (Parser) 10.8±0.36µs 10.4±0.18µs -3.70%
RegExp Literal (Compiler) 18.6±0.04ns 18.6±0.01ns 0.00%
RegExp Literal (Execution) 15.5±31.62µs 13.9±12.38µs -10.32%
RegExp Literal (Parser) 13.9±0.29µs 14.5±0.04µs +4.32%
RegExp Literal Creation (Compiler) 18.6±0.02ns 18.6±0.02ns 0.00%
RegExp Literal Creation (Execution) 9.8±13.43µs 9.3±8.57µs -5.10%
RegExp Literal Creation (Parser) 12.2±0.08µs 12.3±0.17µs +0.82%
Static Object Property Access (Compiler) 18.6±0.01ns 18.6±0.02ns 0.00%
Static Object Property Access (Execution) 4.5±6.48µs 4.9±7.54µs +8.89%
Static Object Property Access (Parser) 12.1±0.68µs 12.6±0.08µs +4.13%
String Object Access (Compiler) 18.6±0.04ns 18.6±0.02ns 0.00%
String Object Access (Execution) 9.9±10.78µs 9.2±7.53µs -7.07%
String Object Access (Parser) 17.2±0.03µs 16.7±0.34µs -2.91%
String comparison (Compiler) 18.6±0.01ns 18.6±0.01ns 0.00%
String comparison (Execution) 4.3±5.47µs 4.5±6.87µs +4.65%
String comparison (Parser) 15.6±0.15µs 15.6±0.10µs 0.00%
String concatenation (Compiler) 18.6±0.03ns 18.6±0.02ns 0.00%
String concatenation (Execution) 4.6±9.93µs 5.1±14.87µs +10.87%
String concatenation (Parser) 11.3±1.51µs 10.2±0.26µs -9.73%
String copy (Compiler) 18.6±0.02ns 18.6±0.06ns 0.00%
String copy (Execution) 3.6±5.67µs 4.3±10.29µs +19.44%
String copy (Parser) 7.7±0.11µs 7.8±0.02µs +1.30%
Symbols (Compiler) 18.6±0.02ns 18.7±0.29ns +0.54%
Symbols (Execution) 4.0±9.81µs 2.8±0.07µs -30.00%
Symbols (Parser) 5.6±0.10µs 6.1±5.67µs +8.93%

@github-actions
Copy link

Benchmark for 5a72694

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 22.6±1.82ns 22.4±1.15ns -0.88%
Arithmetic operations (Execution) 659.4±39.67ns 661.4±68.60ns +0.30%
Arithmetic operations (Parser) 11.4±0.69µs 10.0±1.62µs -12.28%
Array access (Compiler) 22.7±1.44ns 22.0±0.71ns -3.08%
Array access (Execution) 9.3±12.67µs 9.1±9.76µs -2.15%
Array access (Parser) 20.9±2.34µs 20.8±1.90µs -0.48%
Array creation (Compiler) 22.7±1.37ns 22.2±1.18ns -2.20%
Array creation (Execution) 1331.4±876.10µs 1258.3±833.50µs -5.49%
Array creation (Parser) 25.8±1.72µs 23.9±1.72µs -7.36%
Array pop (Compiler) 22.6±1.35ns 22.5±0.90ns -0.44%
Array pop (Execution) 571.2±40.32µs 706.0±1575.56µs +23.60%
Array pop (Parser) 227.1±13.70µs 222.7±12.77µs -1.94%
Boolean Object Access (Compiler) 22.7±1.74ns 21.9±0.61ns -3.52%
Boolean Object Access (Execution) 10.2±16.35µs 10.1±14.80µs -0.98%
Boolean Object Access (Parser) 24.2±3.56µs 22.6±2.61µs -6.61%
Clean js (Compiler) 22.6±1.18ns 22.5±1.29ns -0.44%
Clean js (Execution) 1042.4±64.18µs 1103.8±780.37µs +5.89%
Clean js (Parser) 52.8±2.59µs 53.6±3.28µs +1.52%
Create Realm 1087.6±4239.58µs 555.2±2136.21µs -48.95%
Dynamic Object Property Access (Compiler) 22.5±0.94ns 23.1±3.08ns +2.67%
Dynamic Object Property Access (Execution) 6.8±15.76µs 5.9±7.69µs -13.24%
Dynamic Object Property Access (Parser) 18.1±0.88µs 17.7±1.19µs -2.21%
Fibonacci (Compiler) 22.6±1.16ns 22.5±2.43ns -0.44%
Fibonacci (Execution) 1286.4±1532.59µs 1258.6±1379.87µs -2.16%
Fibonacci (Parser) 29.2±2.99µs 29.6±1.67µs +1.37%
For loop (Compiler) 25.3±1.02ns 22.3±0.90ns -11.86%
For loop (Execution) 39.5±57.93µs 33.6±49.46µs -14.94%
For loop (Parser) 25.2±2.80µs 25.9±1.74µs +2.78%
Mini js (Compiler) 22.7±1.33ns 22.1±1.09ns -2.64%
Mini js (Execution) 971.1±70.62µs 960.3±36.92µs -1.11%
Mini js (Parser) 46.7±3.76µs 46.6±3.94µs -0.21%
Number Object Access (Compiler) 22.6±0.88ns 22.4±1.36ns -0.88%
Number Object Access (Execution) 7.2±6.61µs 8.6±17.36µs +19.44%
Number Object Access (Parser) 19.2±2.06µs 18.4±1.24µs -4.17%
Object Creation (Compiler) 22.7±1.05ns 22.5±1.46ns -0.88%
Object Creation (Execution) 8.2±30.46µs 6.9±17.90µs -15.85%
Object Creation (Parser) 15.0±0.80µs 15.7±1.06µs +4.67%
RegExp (Compiler) 22.3±1.24ns 21.9±0.75ns -1.79%
RegExp (Execution) 19.1±15.19µs 17.7±12.75µs -7.33%
RegExp (Parser) 17.6±2.20µs 17.4±2.24µs -1.14%
RegExp Creation (Compiler) 23.0±1.96ns 21.8±0.70ns -5.22%
RegExp Creation (Execution) 12.5±10.37µs 13.3±18.82µs +6.40%
RegExp Creation (Parser) 14.3±1.07µs 14.5±0.95µs +1.40%
RegExp Literal (Compiler) 22.7±1.46ns 22.3±1.20ns -1.76%
RegExp Literal (Execution) 18.4±11.24µs 17.8±17.23µs -3.26%
RegExp Literal (Parser) 18.8±1.40µs 19.7±1.16µs +4.79%
RegExp Literal Creation (Compiler) 23.0±2.78ns 22.1±0.86ns -3.91%
RegExp Literal Creation (Execution) 13.2±17.75µs 11.9±8.81µs -9.85%
RegExp Literal Creation (Parser) 15.6±0.93µs 16.2±0.96µs +3.85%
Static Object Property Access (Compiler) 22.7±1.03ns 22.3±1.47ns -1.76%
Static Object Property Access (Execution) 6.8±16.25µs 8.3±27.54µs +22.06%
Static Object Property Access (Parser) 16.5±1.09µs 77.1±608.60µs +367.27%
String Object Access (Compiler) 22.8±1.26ns 22.0±0.74ns -3.51%
String Object Access (Execution) 12.2±10.58µs 12.3±10.77µs +0.82%
String Object Access (Parser) 124.6±1018.57µs 24.3±3.81µs -80.50%
String comparison (Compiler) 22.7±1.35ns 22.0±0.74ns -3.08%
String comparison (Execution) 5.2±5.97µs 5.5±6.76µs +5.77%
String comparison (Parser) 20.3±2.52µs 20.2±1.20µs -0.49%
String concatenation (Compiler) 22.1±0.56ns 22.5±1.40ns +1.81%
String concatenation (Execution) 5.4±10.16µs 4.6±5.77µs -14.81%
String concatenation (Parser) 13.9±1.01µs 13.9±0.85µs 0.00%
String copy (Compiler) 23.0±2.17ns 22.5±2.70ns -2.17%
String copy (Execution) 4.6±7.18µs 5.2±10.05µs +13.04%
String copy (Parser) 10.5±0.99µs 10.3±0.44µs -1.90%
Symbols (Compiler) 22.5±1.04ns 22.6±1.52ns +0.44%
Symbols (Execution) 4.0±6.37µs 4.9±9.06µs +22.50%
Symbols (Parser) 7.6±0.98µs 7.3±0.32µs -3.95%

@jedel1043
Copy link
Member

jedel1043 commented Nov 29, 2023

Blocked on #2767, since it seems like they're both a bit incompatible with each other. @HalidOdat will determine if this should be closed after finishing the implementation of the other PR.

@jedel1043 jedel1043 added the blocked Waiting for another code change label Nov 29, 2023
@HalidOdat
Copy link
Member Author

HalidOdat commented Dec 9, 2023

After doing some experimentation with the merged in inline cache I don't think it's worth doing, so closing this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocked Waiting for another code change builtins PRs and Issues related to builtins/intrinsics execution Issues or PRs related to code execution performance Performance related changes and issues run-benchmark Label used to run banchmarks on PRs
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Static Shapes (Hidden Classes)
4 participants