From 6c437d528f24cae84d0ea67d48bb2f43588ae649 Mon Sep 17 00:00:00 2001 From: Toshit Chawda Date: Fri, 13 Dec 2024 22:25:17 -0800 Subject: [PATCH] new flamegraph and sort unstable --- rewriter/Cargo.toml | 2 +- rewriter/native/Cargo.toml | 2 +- rewriter/native/flamegraph.svg | 4 ++-- rewriter/native/src/main.rs | 19 ++++++++----------- rewriter/rewriter/Cargo.toml | 2 +- rewriter/rewriter/src/changes.rs | 14 +++++++++----- rewriter/wasm/Cargo.toml | 2 +- 7 files changed, 23 insertions(+), 22 deletions(-) diff --git a/rewriter/Cargo.toml b/rewriter/Cargo.toml index 1ff4bdf..c10dd65 100644 --- a/rewriter/Cargo.toml +++ b/rewriter/Cargo.toml @@ -11,4 +11,4 @@ panic = "abort" [workspace.dependencies] oxc = "0.41.0" - +url = "2.5.4" diff --git a/rewriter/native/Cargo.toml b/rewriter/native/Cargo.toml index e9dcb91..a746d06 100644 --- a/rewriter/native/Cargo.toml +++ b/rewriter/native/Cargo.toml @@ -6,8 +6,8 @@ edition = "2021" [dependencies] anyhow = "1.0.94" oxc = { workspace = true } +url = { workspace = true } rewriter = { version = "0.1.0", path = "../rewriter", features = ["debug"] } -url = "2.5.4" urlencoding = "2.1.3" [dev-dependencies] diff --git a/rewriter/native/flamegraph.svg b/rewriter/native/flamegraph.svg index 60f326f..4573624 100644 --- a/rewriter/native/flamegraph.svg +++ b/rewriter/native/flamegraph.svg @@ -1,4 +1,4 @@ - \ No newline at end of file diff --git a/rewriter/native/src/main.rs b/rewriter/native/src/main.rs index cbaea28..19324e8 100644 --- a/rewriter/native/src/main.rs +++ b/rewriter/native/src/main.rs @@ -30,30 +30,27 @@ fn dorewrite(data: &str) -> Result { capture_errors: true, do_sourcemaps: true, - scramitize: false, + scramitize: true, strict_rewrites: true, }, ) .context("failed to rewrite file") } -fn dobench(data: String) { - loop { - let _ = dorewrite(&data); - } -} - fn main() -> Result<()> { let file = env::args().nth(1).unwrap_or_else(|| "test.js".to_string()); let data = fs::read_to_string(file).context("failed to read file")?; let bench = env::args().nth(2).is_some(); if bench { - for _ in 0..15 { - let data = data.clone(); - std::thread::spawn(move || dobench(data)); + let mut i = 0; + loop { + let _ = dorewrite(&data); + i += 1; + if i % 100 == 0 { + println!("{}...", i); + } } - dobench(data); } else { let res = dorewrite(&data)?; diff --git a/rewriter/rewriter/Cargo.toml b/rewriter/rewriter/Cargo.toml index 94a64e7..f369b7e 100644 --- a/rewriter/rewriter/Cargo.toml +++ b/rewriter/rewriter/Cargo.toml @@ -5,9 +5,9 @@ edition = "2021" [dependencies] oxc = { workspace = true } +url = { workspace = true } smallvec = "1.13.2" thiserror = "2.0.6" -url = "2.5.4" [features] debug = [] diff --git a/rewriter/rewriter/src/changes.rs b/rewriter/rewriter/src/changes.rs index 77171be..bb22935 100644 --- a/rewriter/rewriter/src/changes.rs +++ b/rewriter/rewriter/src/changes.rs @@ -361,11 +361,15 @@ pub(crate) struct JsChanges { impl JsChanges { pub fn new() -> Self { - Self { inner: Vec::new() } + Self { + inner: Default::default(), + } } - pub fn add(&mut self, change: Rewrite) { - self.inner.extend(change.into_inner()); + pub fn add(&mut self, rewrite: Rewrite) { + for change in rewrite.into_inner() { + self.inner.push(change); + } } pub fn perform(&mut self, js: &str, cfg: &Config) -> Result @@ -374,7 +378,7 @@ impl JsChanges { E: Clone, { let mut offset = 0; - let mut buffer = Vec::with_capacity(((js.len() as u64 * 120) / 100) as usize); + let mut buffer = Vec::with_capacity(js.len() * 2); macro_rules! tryget { ($range:expr) => { @@ -385,7 +389,7 @@ impl JsChanges { // TODO: add sourcemaps let map = Vec::with_capacity(js.len() * 2); - self.inner.sort(); + self.inner.sort_unstable(); for change in &self.inner { let span = change.get_span(); diff --git a/rewriter/wasm/Cargo.toml b/rewriter/wasm/Cargo.toml index 177078e..d1e6dc0 100644 --- a/rewriter/wasm/Cargo.toml +++ b/rewriter/wasm/Cargo.toml @@ -10,9 +10,9 @@ crate-type = ["cdylib"] instant = { version = "0.1.13", features = ["wasm-bindgen"] } js-sys = "0.3.76" oxc = { workspace = true } +url = { workspace = true } rewriter = { version = "0.1.0", path = "../rewriter" } thiserror = "2.0.6" -url = "2.5.4" wasm-bindgen = "0.2.99" web-sys = { version = "0.3.76", features = ["Url"] }