Skip to content

Commit 25c2c12

Browse files
authored
do not pass around large objects if possible (#223)
Was reading this thread, so thought I'd give it a try https://twitter.com/devongovett/status/1504476131818237967
1 parent c47434e commit 25c2c12

24 files changed

+277
-341
lines changed

benchmark/benchmark.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import benchmark from 'benchmark'
22
import byteSize from './format-filesize.js'
3-
import { analyze as analyzeCss } from '../dist/analyzer.cjs'
3+
import { analyze as analyzeCss } from '../dist/analyzer.modern.js'
44
import * as fs from 'fs'
55
const files = [
66
['bol-com-20190617', 'Bol.com'],

benchmark/parse-analyze-ratio.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import byteSize from './format-filesize.js'
2-
import { analyze as analyzeCss } from '../dist/analyzer.js'
2+
import { analyze as analyzeCss } from '../dist/analyzer.modern.js'
33
import * as fs from 'fs'
44
const files = [
55
['bol-com-20190617', 'Bol.com'],

benchmark/readme.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
`node benchmark/benchmark.js`
66

77
```
8-
Bol.com (468 kB): 9.19 ops/sec
9-
Bootstrap 5.0.0 (195 kB): 21.28 ops/sec
10-
CSS-Tricks (195 kB): 20.07 ops/sec
11-
Facebook.com (268 kB): 13.70 ops/sec
12-
GitHub.com (514 kB): 10.29 ops/sec
13-
Gazelle.nl (972 kB): 3.14 ops/sec
14-
Lego.com (246 kB): 17.43 ops/sec
15-
Smashing Magazine.com (1.1 MB): 3.29 ops/sec
16-
Trello.com (312 kB): 12.23 ops/sec
8+
Bol.com (468 kB): 10.07 ops/sec
9+
Bootstrap 5.0.0 (195 kB): 23.98 ops/sec
10+
CSS-Tricks (195 kB): 23.00 ops/sec
11+
Facebook.com (268 kB): 15.66 ops/sec
12+
GitHub.com (514 kB): 11.47 ops/sec
13+
Gazelle.nl (972 kB): 3.38 ops/sec
14+
Lego.com (246 kB): 19.81 ops/sec
15+
Smashing Magazine.com (1.1 MB): 3.79 ops/sec
16+
Trello.com (312 kB): 13.15 ops/sec
1717
```
1818

1919
## Parsing vs. analyzing
@@ -24,13 +24,13 @@ Trello.com (312 kB): 12.23 ops/sec
2424
====================================================================
2525
File | Size | total | parse | Analyze |
2626
====================================================================
27-
Bol.com | 468 kB | 330ms | 201ms | 128ms (38.8%) |
28-
Bootstrap 5.0.0 | 195 kB | 130ms | 88ms | 41ms (31.5%) |
29-
CSS-Tricks | 195 kB | 102ms | 62ms | 40ms (39.2%) |
30-
Facebook.com | 268 kB | 144ms | 69ms | 75ms (52.1%) |
31-
GitHub.com | 514 kB | 195ms | 90ms | 104ms (53.3%) |
32-
Gazelle.nl | 972 kB | 442ms | 209ms | 229ms (51.8%) |
33-
Lego.com | 246 kB | 89ms | 42ms | 46ms (51.7%) |
34-
Smashing Magazine.com | 1.1 MB | 356ms | 166ms | 189ms (53.1%) |
35-
Trello.com | 312 kB | 136ms | 50ms | 86ms (63.2%) |
27+
Bol.com | 468 kB | 328ms | 205ms | 122ms (37.2%) |
28+
Bootstrap 5.0.0 | 195 kB | 142ms | 102ms | 40ms (28.2%) |
29+
CSS-Tricks | 195 kB | 113ms | 60ms | 53ms (46.9%) |
30+
Facebook.com | 268 kB | 132ms | 69ms | 62ms (47.0%) |
31+
GitHub.com | 514 kB | 203ms | 114ms | 87ms (42.9%) |
32+
Gazelle.nl | 972 kB | 366ms | 228ms | 134ms (36.6%) |
33+
Lego.com | 246 kB | 86ms | 38ms | 48ms (55.8%) |
34+
Smashing Magazine.com | 1.1 MB | 428ms | 219ms | 208ms (48.6%) |
35+
Trello.com | 312 kB | 131ms | 72ms | 59ms (45.0%) |
3636
```

src/__fixtures__/bol-com-20190617.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7356,9 +7356,9 @@
73567356
}
73577357
},
73587358
"selectors": {
7359-
"total": 7634,
7359+
"total": 7616,
73607360
"totalUnique": 6268,
7361-
"uniquenessRatio": 0.8210636625622216,
7361+
"uniquenessRatio": 0.8230042016806722,
73627362
"specificity": {
73637363
"min": [
73647364
0,
@@ -53134,7 +53134,7 @@
5313453134
"#uitgelicht-editorials .more-link": 1
5313553135
},
5313653136
"uniquenessRatio": 1,
53137-
"ratio": 0.0015719151165837044
53137+
"ratio": 0.0015756302521008404
5313853138
},
5313953139
"accessibility": {
5314053140
"total": 0,
@@ -53150,8 +53150,7 @@
5315053150
"0%": 9,
5315153151
"to": 9
5315253152
},
53153-
"uniquenessRatio": 0.1111111111111111,
53154-
"ratio": 0.002357872674875557
53153+
"uniquenessRatio": 0.1111111111111111
5315553154
}
5315653155
},
5315753156
"declarations": {

src/__fixtures__/bootstrap-5.0.0.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4741,9 +4741,9 @@
47414741
}
47424742
},
47434743
"selectors": {
4744-
"total": 2807,
4744+
"total": 2799,
47454745
"totalUnique": 2648,
4746-
"uniquenessRatio": 0.9433558959743499,
4746+
"uniquenessRatio": 0.946052161486245,
47474747
"specificity": {
47484748
"min": [
47494749
0,
@@ -21612,7 +21612,7 @@
2161221612
"[role=button]": 1
2161321613
},
2161421614
"uniquenessRatio": 1,
21615-
"ratio": 0.0003562522265764161
21615+
"ratio": 0.0003572704537334762
2161621616
},
2161721617
"keyframes": {
2161821618
"total": 8,
@@ -21622,8 +21622,7 @@
2162221622
"to": 2,
2162321623
"50%": 2
2162421624
},
21625-
"uniquenessRatio": 0.375,
21626-
"ratio": 0.0028500178126113287
21625+
"uniquenessRatio": 0.375
2162721626
}
2162821627
},
2162921628
"declarations": {

src/__fixtures__/css-tricks-20190319.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3290,9 +3290,9 @@
32903290
}
32913291
},
32923292
"selectors": {
3293-
"total": 2529,
3293+
"total": 2511,
32943294
"totalUnique": 2102,
3295-
"uniquenessRatio": 0.8311585606959272,
3295+
"uniquenessRatio": 0.8371166865790521,
32963296
"specificity": {
32973297
"min": [
32983298
0,
@@ -18782,7 +18782,7 @@
1878218782
"#post-284267::after": 1
1878318783
},
1878418784
"uniquenessRatio": 0.8215962441314554,
18785-
"ratio": 0.16844602609727166
18785+
"ratio": 0.16965352449223417
1878618786
},
1878718787
"accessibility": {
1878818788
"total": 0,
@@ -18801,8 +18801,7 @@
1880118801
"from": 3,
1880218802
"to": 5
1880318803
},
18804-
"uniquenessRatio": 0.2777777777777778,
18805-
"ratio": 0.0071174377224199285
18804+
"uniquenessRatio": 0.2777777777777778
1880618805
}
1880718806
},
1880818807
"declarations": {

src/__fixtures__/facebook-20190319.json

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8640,9 +8640,9 @@
86408640
}
86418641
},
86428642
"selectors": {
8643-
"total": 4587,
8643+
"total": 4496,
86448644
"totalUnique": 4408,
8645-
"uniquenessRatio": 0.9609766732068891,
8645+
"uniquenessRatio": 0.9804270462633452,
86468646
"specificity": {
86478647
"min": [
86488648
0,
@@ -35793,7 +35793,7 @@
3579335793
"#bootloader_P_mr5": 1
3579435794
},
3579535795
"uniquenessRatio": 0.9819819819819819,
35796-
"ratio": 0.02419882275997384
35796+
"ratio": 0.02468861209964413
3579735797
},
3579835798
"accessibility": {
3579935799
"total": 1,
@@ -35802,7 +35802,7 @@
3580235802
"div._4-i2 div[role=\"document\"]": 1
3580335803
},
3580435804
"uniquenessRatio": 1,
35805-
"ratio": 0.00021800741225201656
35805+
"ratio": 0.00022241992882562276
3580635806
},
3580735807
"keyframes": {
3580835808
"total": 91,
@@ -35864,8 +35864,7 @@
3586435864
"5%": 1,
3586535865
"55%": 1
3586635866
},
35867-
"uniquenessRatio": 0.6043956043956044,
35868-
"ratio": 0.019838674514933506
35867+
"uniquenessRatio": 0.6043956043956044
3586935868
}
3587035869
},
3587135870
"declarations": {

src/__fixtures__/gazelle-20210905.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15335,9 +15335,9 @@
1533515335
}
1533615336
},
1533715337
"selectors": {
15338-
"total": 11833,
15338+
"total": 11773,
1533915339
"totalUnique": 9512,
15340-
"uniquenessRatio": 0.8038536296797093,
15340+
"uniquenessRatio": 0.8079503949715451,
1534115341
"specificity": {
1534215342
"min": [
1534315343
0,
@@ -86442,11 +86442,11 @@
8644286442
"#surveyBody #closeModalBtn::after": 1
8644386443
},
8644486444
"uniquenessRatio": 0.8426724137931034,
86445-
"ratio": 0.039212372179498016
86445+
"ratio": 0.03941221438885586
8644686446
},
8644786447
"accessibility": {
86448-
"total": 14,
86449-
"totalUnique": 12,
86448+
"total": 15,
86449+
"totalUnique": 13,
8645086450
"unique": {
8645186451
".select2-results__option[aria-selected]": 1,
8645286452
".select2-container--default .select2-results__option[role=group]": 1,
@@ -86457,12 +86457,13 @@
8645786457
".select2-container--classic .select2-results__option[aria-disabled=true]": 1,
8645886458
".select2-container--classic .select2-results__option--highlighted[aria-selected]": 1,
8645986459
"body[aria-busy=\"false\"] .page.messages .messages .message:not(.error)": 2,
86460+
".specifications__wrapper:not([role=\"tablist\"])": 1,
8646086461
".finance-modal .modal-content .modal-header .modal-menu .method-modal-collapsible[aria-expanded='true']": 2,
8646186462
".finance-modal .modal-content .modal-header .modal-menu .method-modal-collapsible[aria-expanded='true'] .method-modal-collapsible__icon": 1,
8646286463
"[role=button]": 1
8646386464
},
86464-
"uniquenessRatio": 0.8571428571428571,
86465-
"ratio": 0.0011831319192089917
86465+
"uniquenessRatio": 0.8666666666666667,
86466+
"ratio": 0.0012741017582604264
8646686467
},
8646786468
"keyframes": {
8646886469
"total": 60,
@@ -86475,8 +86476,7 @@
8647586476
"50%": 3,
8647686477
"30%": 4
8647786478
},
86478-
"uniquenessRatio": 0.1,
86479-
"ratio": 0.005070565368038536
86479+
"uniquenessRatio": 0.1
8648086480
}
8648186481
},
8648286482
"declarations": {

src/__fixtures__/github-20210501.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5181,9 +5181,9 @@
51815181
}
51825182
},
51835183
"selectors": {
5184-
"total": 3043,
5184+
"total": 3019,
51855185
"totalUnique": 2767,
5186-
"uniquenessRatio": 0.909300032862307,
5186+
"uniquenessRatio": 0.9165286518714806,
51875187
"specificity": {
51885188
"min": [
51895189
0,
@@ -23424,7 +23424,7 @@
2342423424
".jump-to-suggestions-results-container [aria-selected=true] .d-on-nav-focus": 1
2342523425
},
2342623426
"uniquenessRatio": 0.9821428571428571,
23427-
"ratio": 0.018402891883010187
23427+
"ratio": 0.018549188473004307
2342823428
},
2342923429
"keyframes": {
2343023430
"total": 24,
@@ -23435,8 +23435,7 @@
2343523435
"10%": 1,
2343623436
"50%": 2
2343723437
},
23438-
"uniquenessRatio": 0.16666666666666666,
23439-
"ratio": 0.007886953664147224
23438+
"uniquenessRatio": 0.16666666666666666
2344023439
}
2344123440
},
2344223441
"declarations": {

src/__fixtures__/lego-20190617.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4121,9 +4121,9 @@
41214121
}
41224122
},
41234123
"selectors": {
4124-
"total": 2701,
4124+
"total": 2641,
41254125
"totalUnique": 1923,
4126-
"uniquenessRatio": 0.7119585338763421,
4126+
"uniquenessRatio": 0.7281332828474063,
41274127
"specificity": {
41284128
"min": [
41294129
0,
@@ -20471,7 +20471,7 @@
2047120471
"#l-modal .l-modal__iframe::-webkit-scrollbar": 1
2047220472
},
2047320473
"uniquenessRatio": 0.8193916349809885,
20474-
"ratio": 0.19474268789337282
20474+
"ratio": 0.1991669822037107
2047520475
},
2047620476
"accessibility": {
2047720477
"total": 0,
@@ -20489,8 +20489,7 @@
2048920489
"60%": 6,
2049020490
"85%": 6
2049120491
},
20492-
"uniquenessRatio": 0.06666666666666667,
20493-
"ratio": 0.022213994816734542
20492+
"uniquenessRatio": 0.06666666666666667
2049420493
}
2049520494
},
2049620495
"declarations": {

0 commit comments

Comments
 (0)