Skip to content

Commit

Permalink
perf(atoms): Update string-cache for per-bucket mutex (#6980)
Browse files Browse the repository at this point in the history
  • Loading branch information
YoniFeng committed Mar 8, 2023
1 parent 79549c0 commit 9841f0b
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 4 deletions.
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/swc_atoms/Cargo.toml
Expand Up @@ -28,7 +28,7 @@ rkyv = { package = "rkyv", version = "=0.7.37", optional = true }
rkyv-latest = { package = "rkyv-test", version = "=0.7.38-test.2", optional = true }
rustc-hash = "1.1.0"
serde = "1"
string_cache = "0.8.4"
string_cache = "0.8.7"
triomphe = "0.1.8"

[build-dependencies]
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_common/Cargo.toml
Expand Up @@ -71,7 +71,7 @@ rustc-hash = "1.1.0"
serde = { version = "1.0.119", features = ["derive"] }
siphasher = "0.3.9"
sourcemap = { version = "6", optional = true }
string_cache = "0.8.4"
string_cache = "0.8.7"
swc_atoms = { version = "0.4.38", path = "../swc_atoms" }
swc_eq_ignore_macros = { version = "0.1.1", path = "../swc_eq_ignore_macros" }
swc_visit = { version = "0.5.4", path = "../swc_visit" }
Expand Down

3 comments on commit 9841f0b

@github-actions
Copy link

Choose a reason for hiding this comment

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

Benchmark

Benchmark suite Current: 9841f0b Previous: 81495f5 Ratio
es/full/bugs-1 300287 ns/iter (± 21618) 287742 ns/iter (± 18721) 1.04
es/full/minify/libraries/antd 1609765191 ns/iter (± 15641152) 1568454661 ns/iter (± 38930603) 1.03
es/full/minify/libraries/d3 304276878 ns/iter (± 6419629) 302728403 ns/iter (± 6831882) 1.01
es/full/minify/libraries/echarts 1232869112 ns/iter (± 12836959) 1234235133 ns/iter (± 17321302) 1.00
es/full/minify/libraries/jquery 91621720 ns/iter (± 746293) 91209889 ns/iter (± 580595) 1.00
es/full/minify/libraries/lodash 108001620 ns/iter (± 779464) 107097381 ns/iter (± 1073092) 1.01
es/full/minify/libraries/moment 53382472 ns/iter (± 444199) 53048199 ns/iter (± 255403) 1.01
es/full/minify/libraries/react 19137381 ns/iter (± 98320) 19189105 ns/iter (± 78788) 1.00
es/full/minify/libraries/terser 248817729 ns/iter (± 2465584) 246166505 ns/iter (± 2725256) 1.01
es/full/minify/libraries/three 436786980 ns/iter (± 4172179) 441284391 ns/iter (± 6143060) 0.99
es/full/minify/libraries/typescript 3042661931 ns/iter (± 14011092) 3040887387 ns/iter (± 35474444) 1.00
es/full/minify/libraries/victory 673880768 ns/iter (± 13729348) 663142186 ns/iter (± 7197353) 1.02
es/full/minify/libraries/vue 132771792 ns/iter (± 1350490) 131817112 ns/iter (± 1209312) 1.01
es/full/codegen/es3 26398 ns/iter (± 103) 26037 ns/iter (± 56) 1.01
es/full/codegen/es5 26457 ns/iter (± 31) 26054 ns/iter (± 89) 1.02
es/full/codegen/es2015 26487 ns/iter (± 65) 25889 ns/iter (± 101) 1.02
es/full/codegen/es2016 26420 ns/iter (± 32) 25953 ns/iter (± 81) 1.02
es/full/codegen/es2017 26423 ns/iter (± 53) 25939 ns/iter (± 117) 1.02
es/full/codegen/es2018 26466 ns/iter (± 68) 26051 ns/iter (± 155) 1.02
es/full/codegen/es2019 26392 ns/iter (± 68) 25952 ns/iter (± 73) 1.02
es/full/codegen/es2020 26329 ns/iter (± 47) 26011 ns/iter (± 153) 1.01
es/full/all/es3 171529630 ns/iter (± 2467278) 174019654 ns/iter (± 1257757) 0.99
es/full/all/es5 164607966 ns/iter (± 2041294) 166112310 ns/iter (± 2715070) 0.99
es/full/all/es2015 123982971 ns/iter (± 663841) 126365333 ns/iter (± 1914756) 0.98
es/full/all/es2016 122986438 ns/iter (± 1861836) 126526043 ns/iter (± 1111576) 0.97
es/full/all/es2017 121330565 ns/iter (± 1277445) 124352623 ns/iter (± 1789836) 0.98
es/full/all/es2018 118852531 ns/iter (± 917286) 121867259 ns/iter (± 1288301) 0.98
es/full/all/es2019 118598300 ns/iter (± 881648) 121633748 ns/iter (± 1466660) 0.98
es/full/all/es2020 114803335 ns/iter (± 681469) 116645062 ns/iter (± 766493) 0.98
es/full/parser 529523 ns/iter (± 7523) 543709 ns/iter (± 6654) 0.97
es/full/base/fixer 21875 ns/iter (± 66) 21799 ns/iter (± 68) 1.00
es/full/base/resolver_and_hygiene 81604 ns/iter (± 100) 81683 ns/iter (± 221) 1.00
serialization of ast node 126 ns/iter (± 0) 145 ns/iter (± 0) 0.87
serialization of serde 129 ns/iter (± 1) 133 ns/iter (± 0) 0.97
css/minify/libraries/bootstrap 28118248 ns/iter (± 155988) 27841848 ns/iter (± 120456) 1.01
css/visitor/compare/clone 2120494 ns/iter (± 5939) 2079941 ns/iter (± 25169) 1.02
css/visitor/compare/visit_mut_span 2302380 ns/iter (± 4834) 2227599 ns/iter (± 7278) 1.03
css/visitor/compare/visit_mut_span_panic 2363655 ns/iter (± 6316) 2292604 ns/iter (± 7621) 1.03
css/visitor/compare/fold_span 3066828 ns/iter (± 26503) 3004834 ns/iter (± 54972) 1.02
css/visitor/compare/fold_span_panic 3203215 ns/iter (± 10732) 3166149 ns/iter (± 21312) 1.01
css/lexer/bootstrap_5_1_3 5246259 ns/iter (± 8626) 5201838 ns/iter (± 2003) 1.01
css/lexer/foundation_6_7_4 4418500 ns/iter (± 6842) 4374922 ns/iter (± 20181) 1.01
css/lexer/tailwind_3_1_1 840936 ns/iter (± 721) 832476 ns/iter (± 332) 1.01
css/parser/bootstrap_5_1_3 22079776 ns/iter (± 75848) 21999460 ns/iter (± 81084) 1.00
css/parser/foundation_6_7_4 17613195 ns/iter (± 39672) 17508247 ns/iter (± 51698) 1.01
css/parser/tailwind_3_1_1 3370603 ns/iter (± 6205) 3343951 ns/iter (± 1653) 1.01
es/codegen/colors 328968 ns/iter (± 184255) 329483 ns/iter (± 185598) 1.00
es/codegen/large 1179477 ns/iter (± 600450) 1368944 ns/iter (± 720718) 0.86
es/codegen/with-parser/colors 48075 ns/iter (± 110) 47941 ns/iter (± 405) 1.00
es/codegen/with-parser/large 525506 ns/iter (± 2327) 525247 ns/iter (± 2772) 1.00
es/minify/libraries/antd 1395021983 ns/iter (± 23465358) 1407821400 ns/iter (± 18123639) 0.99
es/minify/libraries/d3 250832673 ns/iter (± 2691076) 254546813 ns/iter (± 4213222) 0.99
es/minify/libraries/echarts 1056408564 ns/iter (± 6421489) 1067032347 ns/iter (± 15566791) 0.99
es/minify/libraries/jquery 79973316 ns/iter (± 578954) 80483740 ns/iter (± 542813) 0.99
es/minify/libraries/lodash 95428686 ns/iter (± 803021) 95212123 ns/iter (± 1011691) 1.00
es/minify/libraries/moment 46249111 ns/iter (± 158606) 46530186 ns/iter (± 538726) 0.99
es/minify/libraries/react 17060912 ns/iter (± 87313) 17359697 ns/iter (± 134569) 0.98
es/minify/libraries/terser 210433547 ns/iter (± 1363661) 215758275 ns/iter (± 2005949) 0.98
es/minify/libraries/three 370657058 ns/iter (± 7374919) 376249125 ns/iter (± 7838741) 0.99
es/minify/libraries/typescript 2575649594 ns/iter (± 13880106) 2593624386 ns/iter (± 14488267) 0.99
es/minify/libraries/victory 558388682 ns/iter (± 5995785) 565095221 ns/iter (± 12836959) 0.99
es/minify/libraries/vue 116618368 ns/iter (± 1149968) 116658945 ns/iter (± 1116996) 1.00
es/visitor/compare/clone 2363028 ns/iter (± 12252) 2358281 ns/iter (± 18721) 1.00
es/visitor/compare/visit_mut_span 2767504 ns/iter (± 4714) 2808588 ns/iter (± 20132) 0.99
es/visitor/compare/visit_mut_span_panic 2804178 ns/iter (± 4822) 2905696 ns/iter (± 64472) 0.97
es/visitor/compare/fold_span 3881662 ns/iter (± 10522) 3946797 ns/iter (± 17319) 0.98
es/visitor/compare/fold_span_panic 4088715 ns/iter (± 6221) 4028151 ns/iter (± 17068) 1.02
es/lexer/colors 16164 ns/iter (± 15) 16422 ns/iter (± 39) 0.98
es/lexer/angular 7733990 ns/iter (± 4281) 7765709 ns/iter (± 18338) 1.00
es/lexer/backbone 1009276 ns/iter (± 621) 1004238 ns/iter (± 1997) 1.01
es/lexer/jquery 5611194 ns/iter (± 3699) 5570460 ns/iter (± 19049) 1.01
es/lexer/jquery mobile 8628553 ns/iter (± 5642) 8576818 ns/iter (± 6788) 1.01
es/lexer/mootools 4426684 ns/iter (± 2829) 4407414 ns/iter (± 2593) 1.00
es/lexer/underscore 841955 ns/iter (± 455) 841125 ns/iter (± 682) 1.00
es/lexer/three 26373731 ns/iter (± 25383) 26152013 ns/iter (± 11852) 1.01
es/lexer/yui 4784364 ns/iter (± 5511) 4804613 ns/iter (± 3293) 1.00
es/parser/colors 30176 ns/iter (± 159) 30277 ns/iter (± 174) 1.00
es/parser/angular 15554304 ns/iter (± 116444) 16082209 ns/iter (± 183016) 0.97
es/parser/backbone 2284470 ns/iter (± 12659) 2292802 ns/iter (± 12700) 1.00
es/parser/jquery 12222433 ns/iter (± 53914) 12557788 ns/iter (± 83791) 0.97
es/parser/jquery mobile 19273994 ns/iter (± 129217) 19756257 ns/iter (± 246540) 0.98
es/parser/mootools 9458320 ns/iter (± 21089) 9497314 ns/iter (± 25299) 1.00
es/parser/underscore 1944313 ns/iter (± 11729) 1940576 ns/iter (± 10960) 1.00
es/parser/three 56142853 ns/iter (± 464226) 58567934 ns/iter (± 142526) 0.96
es/parser/yui 9453578 ns/iter (± 48489) 9630506 ns/iter (± 78882) 0.98
es/preset-env/usage/builtin_type 146976 ns/iter (± 34613) 141821 ns/iter (± 31885) 1.04
es/preset-env/usage/property 21303 ns/iter (± 54) 21237 ns/iter (± 96) 1.00
es/resolver/typescript 113006626 ns/iter (± 4805114) 114205235 ns/iter (± 1735373) 0.99
es/fixer/typescript 83876905 ns/iter (± 3596483) 87446004 ns/iter (± 763648) 0.96
es/hygiene/typescript 180679131 ns/iter (± 1719242) 182847107 ns/iter (± 1323812) 0.99
es/resolver_with_hygiene/typescript 317211700 ns/iter (± 2543778) 308520147 ns/iter (± 1105423) 1.03
es/visitor/base-perf/module_clone 75849 ns/iter (± 1491) 75430 ns/iter (± 1851) 1.01
es/visitor/base-perf/fold_empty 86195 ns/iter (± 1613) 86838 ns/iter (± 1617) 0.99
es/visitor/base-perf/fold_noop_impl_all 85270 ns/iter (± 1103) 85758 ns/iter (± 1700) 0.99
es/visitor/base-perf/fold_noop_impl_vec 85514 ns/iter (± 1857) 87428 ns/iter (± 1593) 0.98
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 56 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 59 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 107 ns/iter (± 0) 103 ns/iter (± 0) 1.04
es/visitor/base-perf/boxing_unboxed 106 ns/iter (± 0) 102 ns/iter (± 0) 1.04
es/visitor/base-perf/visit_contains_this 3398 ns/iter (± 42) 3464 ns/iter (± 109) 0.98
es/base/parallel/resolver/typescript 4953561728 ns/iter (± 380981679) 5256004272 ns/iter (± 507828495) 0.94
es/base/parallel/hygiene/typescript 2142771426 ns/iter (± 35876357) 2144725225 ns/iter (± 35914187) 1.00
misc/visitors/time-complexity/time 5 98 ns/iter (± 0) 101 ns/iter (± 0) 0.97
misc/visitors/time-complexity/time 10 346 ns/iter (± 0) 344 ns/iter (± 0) 1.01
misc/visitors/time-complexity/time 15 664 ns/iter (± 0) 653 ns/iter (± 0) 1.02
misc/visitors/time-complexity/time 20 1226 ns/iter (± 0) 1216 ns/iter (± 0) 1.01
misc/visitors/time-complexity/time 40 6207 ns/iter (± 2) 6678 ns/iter (± 74) 0.93
misc/visitors/time-complexity/time 60 15597 ns/iter (± 11) 16979 ns/iter (± 43) 0.92
es/full-target/es2016 186444 ns/iter (± 709) 187827 ns/iter (± 438) 0.99
es/full-target/es2017 182197 ns/iter (± 592) 182505 ns/iter (± 505) 1.00
es/full-target/es2018 170710 ns/iter (± 243) 171664 ns/iter (± 609) 0.99
es2020_nullish_coalescing 66356 ns/iter (± 5216) 66864 ns/iter (± 166) 0.99
es2020_optional_chaining 96179 ns/iter (± 7270) 96206 ns/iter (± 288) 1.00
es2022_class_properties 94295 ns/iter (± 162) 93471 ns/iter (± 205) 1.01
es2018_object_rest_spread 71394 ns/iter (± 118) 71266 ns/iter (± 119) 1.00
es2019_optional_catch_binding 61195 ns/iter (± 79) 61277 ns/iter (± 157) 1.00
es2017_async_to_generator 61563 ns/iter (± 75) 61693 ns/iter (± 161) 1.00
es2016_exponentiation 64977 ns/iter (± 80) 65306 ns/iter (± 115) 0.99
es2015_arrow 70992 ns/iter (± 175) 70207 ns/iter (± 370) 1.01
es2015_block_scoped_fn 66087 ns/iter (± 142) 66568 ns/iter (± 149) 0.99
es2015_block_scoping 143022 ns/iter (± 11473) 139339 ns/iter (± 8579) 1.03
es2015_classes 117332 ns/iter (± 359) 117477 ns/iter (± 444) 1.00
es2015_computed_props 61206 ns/iter (± 72) 61547 ns/iter (± 133) 0.99
es2015_destructuring 116993 ns/iter (± 262) 117936 ns/iter (± 301) 0.99
es2015_duplicate_keys 63870 ns/iter (± 99) 64075 ns/iter (± 105) 1.00
es2015_parameters 79714 ns/iter (± 109) 80142 ns/iter (± 313) 0.99
es2015_fn_name 66287 ns/iter (± 524) 66902 ns/iter (± 552) 0.99
es2015_for_of 64527 ns/iter (± 65) 64429 ns/iter (± 147) 1.00
es2015_instanceof 63032 ns/iter (± 85) 63619 ns/iter (± 118) 0.99
es2015_shorthand_property 60909 ns/iter (± 112) 61482 ns/iter (± 140) 0.99
es2015_spread 60804 ns/iter (± 127) 61494 ns/iter (± 152) 0.99
es2015_sticky_regex 61958 ns/iter (± 124) 62921 ns/iter (± 77) 0.98
es2015_typeof_symbol 62501 ns/iter (± 167) 62498 ns/iter (± 160) 1.00
es/transform/baseline/base 51831 ns/iter (± 77) 51940 ns/iter (± 66) 1.00
es/transform/baseline/common_reserved_word 62610 ns/iter (± 84) 63022 ns/iter (± 126) 0.99
es/transform/baseline/common_typescript 149477 ns/iter (± 10956) 169175 ns/iter (± 257) 0.88
es/target/es3 170062 ns/iter (± 324) 170976 ns/iter (± 262) 0.99
es/target/es2015 632140 ns/iter (± 688) 631264 ns/iter (± 1230) 1.00
es/target/es2016 64876 ns/iter (± 138) 65265 ns/iter (± 495) 0.99
es/target/es2017 61427 ns/iter (± 110) 61803 ns/iter (± 96) 0.99
es/target/es2018 80984 ns/iter (± 105) 81569 ns/iter (± 166) 0.99
es/target/es2020 132236 ns/iter (± 171) 132198 ns/iter (± 345) 1.00
babelify-only 675965 ns/iter (± 1172) 668480 ns/iter (± 1240) 1.01
parse_and_babelify_angular 43304878 ns/iter (± 762835) 43349574 ns/iter (± 1315125) 1.00
parse_and_babelify_backbone 5476507 ns/iter (± 27431) 5534749 ns/iter (± 51141) 0.99
parse_and_babelify_jquery 32220111 ns/iter (± 304498) 32703170 ns/iter (± 358836) 0.99
parse_and_babelify_jquery_mobile 54301960 ns/iter (± 635695) 55584426 ns/iter (± 689644) 0.98
parse_and_babelify_mootools 33270600 ns/iter (± 267891) 33746252 ns/iter (± 512200) 0.99
parse_and_babelify_underscore 4380102 ns/iter (± 20677) 4435783 ns/iter (± 29279) 0.99
parse_and_babelify_yui 32699045 ns/iter (± 298343) 33273982 ns/iter (± 555197) 0.98
html/minify/document/css_spec 43041274 ns/iter (± 295966) 42864686 ns/iter (± 199383) 1.00
html/minify/document/github 17685968 ns/iter (± 28455) 17588194 ns/iter (± 75210) 1.01
html/minify/document/stackoverflow 15922989 ns/iter (± 24549) 15796361 ns/iter (± 61913) 1.01
html/minify/document_fragment/css_spec 41112395 ns/iter (± 188606) 41416868 ns/iter (± 282267) 0.99
html/minify/document_fragment/github 17017240 ns/iter (± 15469) 16923016 ns/iter (± 44211) 1.01
html/minify/document_fragment/stackoverflow 15502370 ns/iter (± 45290) 15319264 ns/iter (± 64960) 1.01
html/document/visitor/compare/clone 340448 ns/iter (± 1891) 341277 ns/iter (± 2185) 1.00
html/document/visitor/compare/visit_mut_span 377289 ns/iter (± 2340) 365323 ns/iter (± 1725) 1.03
html/document/visitor/compare/visit_mut_span_panic 381921 ns/iter (± 1970) 374763 ns/iter (± 2095) 1.02
html/document/visitor/compare/fold_span 402071 ns/iter (± 2924) 407684 ns/iter (± 1248) 0.99
html/document/visitor/compare/fold_span_panic 461830 ns/iter (± 1559) 463076 ns/iter (± 1662) 1.00
html/document_fragment/visitor/compare/clone 343428 ns/iter (± 2187) 342000 ns/iter (± 1968) 1.00
html/document_fragment/visitor/compare/visit_mut_span 374395 ns/iter (± 1287) 360014 ns/iter (± 2136) 1.04
html/document_fragment/visitor/compare/visit_mut_span_panic 381843 ns/iter (± 1958) 373768 ns/iter (± 1743) 1.02
html/document_fragment/visitor/compare/fold_span 410445 ns/iter (± 2636) 407672 ns/iter (± 2351) 1.01
html/document_fragment/visitor/compare/fold_span_panic 464708 ns/iter (± 1601) 459946 ns/iter (± 2138) 1.01
html/lexer/css_2021_spec 15764358 ns/iter (± 15169) 15584067 ns/iter (± 9908) 1.01
html/lexer/github_com_17_05_2022 6159971 ns/iter (± 9773) 6020945 ns/iter (± 2742) 1.02
html/lexer/stackoverflow_com_17_05_2022 5697541 ns/iter (± 1419) 5656944 ns/iter (± 1363) 1.01
html/parser/parser_document/css_2021_spec 26553339 ns/iter (± 142667) 26022467 ns/iter (± 315476) 1.02
html/parser/parser_document/github_com_17_05_2022 8976165 ns/iter (± 9346) 8711997 ns/iter (± 4866) 1.03
html/parser/parser_document/stackoverflow_com_17_05_2022 7790023 ns/iter (± 12198) 7713372 ns/iter (± 21491) 1.01
html/parser/parser_document_fragment/css_2021_spec 26711991 ns/iter (± 126373) 26109425 ns/iter (± 299271) 1.02
html/parser/parser_document_fragment/github_com_17_05_2022 8997556 ns/iter (± 15322) 8752755 ns/iter (± 12880) 1.03
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7803147 ns/iter (± 11724) 7731381 ns/iter (± 6368) 1.01

This comment was automatically generated by workflow using github-action-benchmark.

@YoniFeng
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@kdy1
is this all ~noise?
Are the 2 es/base/parallel/ tests the only ones running parallel parsing?

@kdy1
Copy link
Member

@kdy1 kdy1 commented on 9841f0b Mar 8, 2023

Choose a reason for hiding this comment

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

I don't know.
There's no benchmark for parallel parsing.

Please sign in to comment.