Skip to content

perf: use this.lexer.save_position_into() more instead of allocatin… - #310

Closed
bartveneman wants to merge 1 commit into
mainfrom
perf/reuse-save-positions
Closed

bartveneman wants to merge 1 commit into
mainfrom
perf/reuse-save-positions

Conversation

@bartveneman

Copy link
Copy Markdown
Member

…g objects

@bartveneman

Copy link
Copy Markdown
Member Author

after

┌─────────┬─────────────────────────────────────┬────────────────┬─────────────┬────────────────┐
│ (index) │ Benchmark                           │ mode (ops/sec) │ mode (µs)   │ mean (ops/sec) │
├─────────┼─────────────────────────────────────┼────────────────┼─────────────┼────────────────┤
│ 0       │ 'tokenize|Nerdy.dev'                │ '710'          │ '1408.296'  │ '695'          │
│ 1       │ 'parse|Nerdy.dev'                   │ '577'          │ '1732.976'  │ '573'          │
│ 2       │ 'parse (no sub-parsing)|Nerdy.dev'  │ '1262'         │ '792.382'   │ '1248'         │
│ 3       │ 'tokenize|CSS Tricks'               │ '80'           │ '12481.130' │ '80'           │
│ 4       │ 'parse|CSS Tricks'                  │ '51'           │ '19422.726' │ '51'           │
│ 5       │ 'parse (no sub-parsing)|CSS Tricks' │ '169'          │ '5916.685'  │ '167'          │
│ 6       │ 'tokenize|Bootstrap'                │ '465'          │ '2152.263'  │ '460'          │
│ 7       │ 'parse|Bootstrap'                   │ '327'          │ '3062.532'  │ '323'          │
│ 8       │ 'parse (no sub-parsing)|Bootstrap'  │ '624'          │ '1603.411'  │ '618'          │
│ 9       │ 'tokenize|Tailwind'                 │ '38'           │ '26501.244' │ '38'           │
│ 10      │ 'parse|Tailwind'                    │ '25'           │ '39539.976' │ '25'           │
│ 11      │ 'parse (no sub-parsing)|Tailwind'   │ '53'           │ '19012.700' │ '54'           │
│ 12      │ 'parse_selector (simple)'           │ '1597546'      │ '0.626'     │ '1452114'      │
│ 13      │ 'parse_selector (complex)'          │ '726765'       │ '1.376'     │ '704504'       │
│ 14      │ 'parse_selector_list (simple)'      │ '892355'       │ '1.121'     │ '854856'       │
│ 15      │ 'parse_selector_list (complex)'     │ '327423'       │ '3.054'     │ '305207'       │
│ 16      │ 'parse_atrule_prelude (media)'      │ '689998'       │ '1.449'     │ '651149'       │
│ 17      │ 'parse_atrule_prelude (supports)'   │ '856194'       │ '1.168'     │ '822289'       │
│ 18      │ 'parse_declaration'                 │ '822375'       │ '1.216'     │ '786457'       │
│ 19      │ 'parse_value (simple)'              │ '3048223'      │ '0.328'     │ '2520813'      │
│ 20      │ 'parse_value (complex)'             │ '1244385'      │ '0.804'     │ '1183990'      │
│ 21      │ 'parse_dimension'                   │ '12025011'     │ '0.083'     │ '17426974'     │
│ 22      │ 'walk (node.type)|Nerdy.dev'        │ '2419'         │ '413.453'   │ '2404'         │
│ 23      │ 'walk (node.type_name)|Nerdy.dev'   │ '2279'         │ '438.844'   │ '2228'         │
│ 24      │ 'traverse|Nerdy.dev'                │ '3418'         │ '292.572'   │ '3362'         │
│ 25      │ 'walk (node.type)|CSS Tricks'       │ '271'          │ '3693.338'  │ '267'          │
│ 26      │ 'walk (node.type_name)|CSS Tricks'  │ '253'          │ '3946.900'  │ '248'          │
│ 27      │ 'traverse|CSS Tricks'               │ '387'          │ '2585.816'  │ '378'          │
│ 28      │ 'walk (node.type)|Bootstrap'        │ '1275'         │ '784.250'   │ '1263'         │
│ 29      │ 'walk (node.type_name)|Bootstrap'   │ '1168'         │ '856.462'   │ '1154'         │
│ 30      │ 'traverse|Bootstrap'                │ '1796'         │ '556.919'   │ '1775'         │
│ 31      │ 'walk (node.type)|Tailwind'         │ '87'           │ '11513.977' │ '88'           │
│ 32      │ 'walk (node.type_name)|Tailwind'    │ '80'           │ '12549.250' │ '81'           │
│ 33      │ 'traverse|Tailwind'                 │ '128'          │ '7803.840'  │ '125'          │
└─────────┴─────────────────────────────────────┴────────────────┴─────────────┴────────────────┘

── Parse+Walk memory ──

┌─────────┬──────────────┬───────────┬───────────┐
│ (index) │ File         │ Size      │ Memory    │
├─────────┼──────────────┼───────────┼───────────┤
│ 0       │ 'Nerdy.dev'  │ '111 KB'  │ '3.0 MB'  │
│ 1       │ 'CSS Tricks' │ '1308 KB' │ '29.3 MB' │
│ 2       │ 'Bootstrap'  │ '227 KB'  │ '5.9 MB'  │
│ 3       │ 'Tailwind'   │ '2865 KB' │ '73.9 MB' │
└─────────┴──────────────┴───────────┴───────────┘

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Package Size Increase

📦 Package 📏 Base Size 📏 Source Size 📈 Size Change
@projectwallace/css-parser 46.1 kB 46.4 kB +259 B

@pkg-pr-new

pkg-pr-new Bot commented Oct 15, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@projectwallace/css-parser@bb80cef

commit: bb80cef

@bartveneman

Copy link
Copy Markdown
Member Author

before:

┌─────────┬─────────────────────────────────────┬────────────────┬─────────────┬────────────────┐
│ (index) │ Benchmark                           │ mode (ops/sec) │ mode (µs)   │ mean (ops/sec) │
├─────────┼─────────────────────────────────────┼────────────────┼─────────────┼────────────────┤
│ 0       │ 'tokenize|Nerdy.dev'                │ '707'          │ '1413.567'  │ '699'          │
│ 1       │ 'parse|Nerdy.dev'                   │ '571'          │ '1750.176'  │ '562'          │
│ 2       │ 'parse (no sub-parsing)|Nerdy.dev'  │ '1243'         │ '804.672'   │ '1234'         │
│ 3       │ 'tokenize|CSS Tricks'               │ '80'           │ '12482.636' │ '79'           │
│ 4       │ 'parse|CSS Tricks'                  │ '51'           │ '19626.862' │ '50'           │
│ 5       │ 'parse (no sub-parsing)|CSS Tricks' │ '168'          │ '5939.190'  │ '166'          │
│ 6       │ 'tokenize|Bootstrap'                │ '456'          │ '2190.887'  │ '456'          │
│ 7       │ 'parse|Bootstrap'                   │ '320'          │ '3126.565'  │ '314'          │
│ 8       │ 'parse (no sub-parsing)|Bootstrap'  │ '619'          │ '1614.490'  │ '613'          │
│ 9       │ 'tokenize|Tailwind'                 │ '38'           │ '26557.490' │ '38'           │
│ 10      │ 'parse|Tailwind'                    │ '25'           │ '39839.501' │ '25'           │
│ 11      │ 'parse (no sub-parsing)|Tailwind'   │ '53'           │ '18727.950' │ '54'           │
│ 12      │ 'parse_selector (simple)'           │ '2432735'      │ '0.411'     │ '1995315'      │
│ 13      │ 'parse_selector (complex)'          │ '860215'       │ '1.163'     │ '834513'       │
│ 14      │ 'parse_selector_list (simple)'      │ '1154361'      │ '0.866'     │ '1049411'      │
│ 15      │ 'parse_selector_list (complex)'     │ '356608'       │ '2.804'     │ '328190'       │
│ 16      │ 'parse_atrule_prelude (media)'      │ '802890'       │ '1.245'     │ '777716'       │
│ 17      │ 'parse_atrule_prelude (supports)'   │ '1102196'      │ '0.907'     │ '1016207'      │
│ 18      │ 'parse_declaration'                 │ '834606'       │ '1.198'     │ '798318'       │
│ 19      │ 'parse_value (simple)'              │ '3106844'      │ '0.322'     │ '2438910'      │
│ 20      │ 'parse_value (complex)'             │ '1252678'      │ '0.798'     │ '1195945'      │
│ 21      │ 'parse_dimension'                   │ '12025011'     │ '0.083'     │ '17277864'     │
│ 22      │ 'walk (node.type)|Nerdy.dev'        │ '2399'         │ '416.870'   │ '2400'         │
│ 23      │ 'walk (node.type_name)|Nerdy.dev'   │ '2266'         │ '441.293'   │ '2237'         │
│ 24      │ 'traverse|Nerdy.dev'                │ '3366'         │ '297.096'   │ '3338'         │
│ 25      │ 'walk (node.type)|CSS Tricks'       │ '276'          │ '3629.366'  │ '271'          │
│ 26      │ 'walk (node.type_name)|CSS Tricks'  │ '254'          │ '3935.535'  │ '249'          │
│ 27      │ 'traverse|CSS Tricks'               │ '375'          │ '2666.910'  │ '372'          │
│ 28      │ 'walk (node.type)|Bootstrap'        │ '1300'         │ '768.999'   │ '1271'         │
│ 29      │ 'walk (node.type_name)|Bootstrap'   │ '1188'         │ '841.739'   │ '1170'         │
│ 30      │ 'traverse|Bootstrap'                │ '1801'         │ '555.319'   │ '1770'         │
│ 31      │ 'walk (node.type)|Tailwind'         │ '91'           │ '10937.698' │ '89'           │
│ 32      │ 'walk (node.type_name)|Tailwind'    │ '82'           │ '12178.358' │ '82'           │
│ 33      │ 'traverse|Tailwind'                 │ '126'          │ '7948.687'  │ '127'          │
└─────────┴─────────────────────────────────────┴────────────────┴─────────────┴────────────────┘

── Parse+Walk memory ──

┌─────────┬──────────────┬───────────┬───────────┐
│ (index) │ File         │ Size      │ Memory    │
├─────────┼──────────────┼───────────┼───────────┤
│ 0       │ 'Nerdy.dev'  │ '111 KB'  │ '3.6 MB'  │
│ 1       │ 'CSS Tricks' │ '1308 KB' │ '37.9 MB' │
│ 2       │ 'Bootstrap'  │ '227 KB'  │ '6.9 MB'  │
│ 3       │ 'Tailwind'   │ '2865 KB' │ '86.2 MB' │
└─────────┴──────────────┴───────────┴───────────┘

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant