rusty-ecma / RESSA

Rusty EcmaScript Syntax Analyzer
MIT License
111 stars 14 forks source link

Source location #70

Closed FreeMasen closed 1 year ago

FreeMasen commented 2 years ago

This updates the parser to use an AST that has attached source locations for each node to allow for generating things like source maps

codecov[bot] commented 2 years ago

Codecov Report

Merging #70 (f7a87b6) into master (a176ecc) will decrease coverage by 11.58%. The diff coverage is 47.54%.

:exclamation: Current head f7a87b6 differs from pull request most recent head 1ebb72f. Consider uploading reports for the commit 1ebb72f to get more accurate results

@@             Coverage Diff             @@
##           master      #70       +/-   ##
===========================================
- Coverage   86.19%   74.60%   -11.59%     
===========================================
  Files          15        8        -7     
  Lines        8380     4907     -3473     
===========================================
- Hits         7223     3661     -3562     
- Misses       1157     1246       +89     
Impacted Files Coverage Δ
src/error.rs 4.16% <0.00%> (ø)
src/lib.rs 94.28% <ø> (+14.76%) :arrow_up:
src/spanned/mod.rs 76.90% <ø> (ø)
src/lhs.rs 34.41% <18.00%> (-1.89%) :arrow_down:
src/formal_params.rs 69.23% <62.50%> (+2.56%) :arrow_up:
src/lexical_names.rs 84.95% <75.86%> (+0.14%) :arrow_up:
src/regex.rs 80.00% <100.00%> (ø)
tests/all/comment_handler.rs
tests/all/ecma262.rs
tests/all/main.rs
... and 6 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

FreeMasen commented 2 years ago

This was expected to impact performance at some level, below is a preliminary benchmark to get a good understanding of how performance will differ from the currently released version.

angular1                time:   [68.623 ms 68.742 ms 68.862 ms]
                        change: [+117.27% +118.68% +119.86%] (p = 0.00 < 0.05)
                        Performance has regressed.
angular1_min            time:   [59.365 ms 59.526 ms 59.733 ms]
                        change: [+142.98% +143.76% +144.68%] (p = 0.00 < 0.05)
                        Performance has regressed.
jquery                  time:   [34.065 ms 34.134 ms 34.200 ms]
                        change: [+131.38% +132.77% +134.15%] (p = 0.00 < 0.05)
                        Performance has regressed.
jquery_min              time:   [30.078 ms 30.098 ms 30.122 ms]
                        change: [+154.16% +155.18% +156.06%] (p = 0.00 < 0.05)
                        Performance has regressed.
react                   time:   [8.8642 ms 8.8759 ms 8.8887 ms]
                        change: [+122.47% +125.49% +128.68%] (p = 0.00 < 0.05)
                        Performance has regressed.
react_min               time:   [3.1529 ms 3.1596 ms 3.1681 ms]
                        change: [+111.36% +114.93% +118.39%] (p = 0.00 < 0.05)
                        Performance has regressed.
react_dom               time:   [71.870 ms 71.915 ms 71.966 ms]
                        change: [+124.10% +124.67% +125.18%] (p = 0.00 < 0.05)
                        Performance has regressed.
react_dom_min           time:   [36.781 ms 36.854 ms 36.975 ms]
                        change: [+160.50% +161.56% +162.69%] (p = 0.00 < 0.05)
                        Performance has regressed.
vue                     time:   [42.257 ms 42.389 ms 42.632 ms]
                        change: [+129.28% +130.70% +132.42%] (p = 0.00 < 0.05)
                        Performance has regressed.
vue_min                 time:   [31.141 ms 31.172 ms 31.198 ms]
                        change: [+150.30% +151.19% +151.98%] (p = 0.00 < 0.05)
                        Performance has regressed.
es5                     time:   [844.21 us 845.95 us 848.43 us]
                        change: [+112.19% +113.18% +114.18%] (p = 0.00 < 0.05)
                        Performance has regressed.
es2015                  time:   [1.4431 ms 1.4445 ms 1.4463 ms]
                        change: [+102.48% +102.94% +103.44%] (p = 0.00 < 0.05)
                        Performance has regressed.
es_module               time:   [1.5244 ms 1.5254 ms 1.5267 ms]
                        change: [+97.970% +98.590% +99.140%] (p = 0.00 < 0.05)
                        Performance has regressed.

While the time it takes to run these benchmarks seems to be increasing by a factor of ~2, which warrants investigation, the performance hasn't dropped to be outlandishly slow.

flamegraph for benchmarks