mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-04 10:29:58 +00:00
perf(regular_expression): defer literal range dash allocation (#28511)
Allocate a literal dash only when a class range falls back to literal class contents. AI-assisted (Codex).
This commit is contained in:
1 parent
d85ee3db01
commit
3708934efb
5 files changed
+26
-19
No files matched your search
@@ -873,21 +873,21 @@ impl<'a> PatternParser<'a> {
|
||||
continue;
|
||||
}
|
||||
|
||||
let dash = ast::CharacterClassContents::Character(ArenaBox::new_in(
|
||||
ast::Character {
|
||||
span: self.span_factory.create(span_start, self.reader.offset()),
|
||||
kind: ast::CharacterKind::Symbol,
|
||||
value: '-' as u32,
|
||||
},
|
||||
self,
|
||||
));
|
||||
let dash_span = self.span_factory.create(span_start, self.reader.offset());
|
||||
|
||||
let Some(class_atom_to) = self.parse_class_atom()? else {
|
||||
// ClassAtom[?UnicodeMode] NonemptyClassRangesNoDash[?UnicodeMode]
|
||||
// => ClassAtom[?UnicodeMode] ClassAtom[?UnicodeMode]
|
||||
// => ClassAtom[?UnicodeMode] -
|
||||
body.push(class_atom);
|
||||
body.push(dash);
|
||||
body.push(ast::CharacterClassContents::Character(ArenaBox::new_in(
|
||||
ast::Character {
|
||||
span: dash_span,
|
||||
kind: ast::CharacterKind::Symbol,
|
||||
value: '-' as u32,
|
||||
},
|
||||
self,
|
||||
)));
|
||||
continue;
|
||||
};
|
||||
|
||||
@@ -937,7 +937,14 @@ impl<'a> PatternParser<'a> {
|
||||
}
|
||||
|
||||
body.push(class_atom);
|
||||
body.push(dash);
|
||||
body.push(ast::CharacterClassContents::Character(ArenaBox::new_in(
|
||||
ast::Character {
|
||||
span: dash_span,
|
||||
kind: ast::CharacterKind::Symbol,
|
||||
value: '-' as u32,
|
||||
},
|
||||
self,
|
||||
)));
|
||||
body.push(class_atom_to);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ antd.js:
|
||||
sys peak growth: 19934725 # 19.93 MB
|
||||
arena allocs: 175842
|
||||
arena reallocs: 34169
|
||||
arena size: 43472344 # 43.47 MB
|
||||
arena size: 43471240 # 43.47 MB
|
||||
|
||||
binder.ts:
|
||||
file size: 193077 # 193.08 kB
|
||||
|
||||
@@ -5,7 +5,7 @@ checker.ts:
|
||||
sys deallocs: 19
|
||||
sys alloc bytes: 4820 # 4.82 kB
|
||||
sys peak growth: 2432 # 2.43 kB
|
||||
arena allocs: 259312
|
||||
arena allocs: 259307
|
||||
arena reallocs: 15233
|
||||
arena size: 12875504 # 12.88 MB
|
||||
|
||||
@@ -16,7 +16,7 @@ App.tsx:
|
||||
sys deallocs: 18
|
||||
sys alloc bytes: 4348 # 4.35 kB
|
||||
sys peak growth: 1868 # 1.87 kB
|
||||
arena allocs: 43828
|
||||
arena allocs: 43826
|
||||
arena reallocs: 2263
|
||||
arena size: 2228464 # 2.23 MB
|
||||
|
||||
@@ -38,7 +38,7 @@ pdf.mjs:
|
||||
sys deallocs: 61
|
||||
sys alloc bytes: 24020 # 24.02 kB
|
||||
sys peak growth: 12140 # 12.14 kB
|
||||
arena allocs: 88940
|
||||
arena allocs: 88912
|
||||
arena reallocs: 5904
|
||||
arena size: 4488040 # 4.49 MB
|
||||
|
||||
@@ -49,9 +49,9 @@ antd.js:
|
||||
sys deallocs: 183
|
||||
sys alloc bytes: 94120 # 94.12 kB
|
||||
sys peak growth: 38896 # 38.90 kB
|
||||
arena allocs: 519986
|
||||
arena allocs: 519914
|
||||
arena reallocs: 35629
|
||||
arena size: 29903280 # 29.90 MB
|
||||
arena size: 29902176 # 29.90 MB
|
||||
|
||||
binder.ts:
|
||||
file size: 193077 # 193.08 kB
|
||||
@@ -71,6 +71,6 @@ kitchen-sink.tsx:
|
||||
sys deallocs: 182
|
||||
sys alloc bytes: 34053 # 34.05 kB
|
||||
sys peak growth: 3892 # 3.89 kB
|
||||
arena allocs: 135741
|
||||
arena allocs: 135713
|
||||
arena reallocs: 8759
|
||||
arena size: 6398256 # 6.40 MB
|
||||
@@ -51,7 +51,7 @@ antd.js:
|
||||
sys peak growth: 5441278 # 5.44 MB
|
||||
arena allocs: 0
|
||||
arena reallocs: 0
|
||||
arena size: 29903280 # 29.90 MB
|
||||
arena size: 29902176 # 29.90 MB
|
||||
|
||||
binder.ts:
|
||||
file size: 193077 # 193.08 kB
|
||||
|
||||
@@ -51,7 +51,7 @@ antd.js:
|
||||
sys peak growth: 1611 # 1.61 kB
|
||||
arena allocs: 2
|
||||
arena reallocs: 0
|
||||
arena size: 29903304 # 29.90 MB
|
||||
arena size: 29902200 # 29.90 MB
|
||||
|
||||
binder.ts:
|
||||
file size: 193077 # 193.08 kB
|
||||
|
||||
Reference in new issue
Block a user