mirror of
https://github.com/aphrody-labs/oxc.git
synced 2026-10-14 22:29:17 +00:00
perf(minifier): preallocate stmts vec size to avoid excesive reallocs (#26856)
preallocate the output vector with `stmts.len()` capacity instead of starting from empty, since minimize_statements predominantly removes/collapses statements.
This commit is contained in:
1 parent
730aee85fc
commit
3f1e3aa781
2 files changed
+17
-16
No files matched your search
@@ -50,7 +50,8 @@ impl<'a> PeepholeOptimizations {
|
||||
/// ## MinimizeExitPoints:
|
||||
/// <https://github.com/google/closure-compiler/blob/v20240609/src/com/google/javascript/jscomp/MinimizeExitPoints.java>
|
||||
pub fn minimize_statements(stmts: &mut ArenaVec<'a, Statement<'a>>, ctx: &mut TraverseCtx<'a>) {
|
||||
let mut old_stmts = stmts.take_in(ctx).into_iter();
|
||||
let dummy = ArenaVec::with_capacity_in(stmts.len(), ctx);
|
||||
let mut old_stmts = std::mem::replace(stmts, dummy).into_iter();
|
||||
let mut is_control_flow_dead = false;
|
||||
let mut keep_var = KeepVar::new();
|
||||
let mut identity_drops = 0u32;
|
||||
|
||||
@@ -6,8 +6,8 @@ checker.ts:
|
||||
sys alloc bytes: 14996632 # 15.00 MB
|
||||
sys peak growth: 10169560 # 10.17 MB
|
||||
arena allocs: 56226
|
||||
arena reallocs: 21411
|
||||
arena size: 16507656 # 16.51 MB
|
||||
arena reallocs: 5084
|
||||
arena size: 16317704 # 16.32 MB
|
||||
|
||||
App.tsx:
|
||||
file size: 415342 # 415.34 kB
|
||||
@@ -17,8 +17,8 @@ App.tsx:
|
||||
sys alloc bytes: 2128563 # 2.13 MB
|
||||
sys peak growth: 1612427 # 1.61 MB
|
||||
arena allocs: 7489
|
||||
arena reallocs: 2709
|
||||
arena size: 2704912 # 2.70 MB
|
||||
arena reallocs: 920
|
||||
arena size: 2684576 # 2.68 MB
|
||||
|
||||
RadixUIAdoptionSection.jsx:
|
||||
file size: 2520 # 2.52 kB
|
||||
@@ -28,7 +28,7 @@ RadixUIAdoptionSection.jsx:
|
||||
sys alloc bytes: 17400 # 17.40 kB
|
||||
sys peak growth: 11628 # 11.63 kB
|
||||
arena allocs: 16
|
||||
arena reallocs: 6
|
||||
arena reallocs: 0
|
||||
arena size: 35224 # 35.22 kB
|
||||
|
||||
pdf.mjs:
|
||||
@@ -39,8 +39,8 @@ pdf.mjs:
|
||||
sys alloc bytes: 5316219 # 5.32 MB
|
||||
sys peak growth: 3693363 # 3.69 MB
|
||||
arena allocs: 19526
|
||||
arena reallocs: 7696
|
||||
arena size: 5757664 # 5.76 MB
|
||||
arena reallocs: 2574
|
||||
arena size: 5708896 # 5.71 MB
|
||||
|
||||
antd.js:
|
||||
file size: 6686316 # 6.69 MB
|
||||
@@ -49,9 +49,9 @@ antd.js:
|
||||
sys deallocs: 860
|
||||
sys alloc bytes: 29976375 # 29.98 MB
|
||||
sys peak growth: 19934749 # 19.93 MB
|
||||
arena allocs: 181720
|
||||
arena reallocs: 63323
|
||||
arena size: 43279864 # 43.28 MB
|
||||
arena allocs: 181721
|
||||
arena reallocs: 34406
|
||||
arena size: 43045192 # 43.05 MB
|
||||
|
||||
binder.ts:
|
||||
file size: 193077 # 193.08 kB
|
||||
@@ -61,8 +61,8 @@ binder.ts:
|
||||
sys alloc bytes: 963032 # 963.03 kB
|
||||
sys peak growth: 657404 # 657.40 kB
|
||||
arena allocs: 2923
|
||||
arena reallocs: 834
|
||||
arena size: 1077056 # 1.08 MB
|
||||
arena reallocs: 244
|
||||
arena size: 1075024 # 1.08 MB
|
||||
|
||||
kitchen-sink.tsx:
|
||||
file size: 732898 # 732.90 kB
|
||||
@@ -71,6 +71,6 @@ kitchen-sink.tsx:
|
||||
sys deallocs: 1854
|
||||
sys alloc bytes: 5304692 # 5.30 MB
|
||||
sys peak growth: 3707457 # 3.71 MB
|
||||
arena allocs: 31143
|
||||
arena reallocs: 12185
|
||||
arena size: 8673608 # 8.67 MB
|
||||
arena allocs: 31159
|
||||
arena reallocs: 3012
|
||||
arena size: 8444408 # 8.44 MB
|
||||
Reference in new issue
Block a user