mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-13 22:40:01 -04:00
new flamegraph and sort unstable
This commit is contained in:
parent
8193c06c8e
commit
6c437d528f
7 changed files with 23 additions and 22 deletions
|
@ -11,4 +11,4 @@ panic = "abort"
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
oxc = "0.41.0"
|
oxc = "0.41.0"
|
||||||
|
url = "2.5.4"
|
||||||
|
|
|
@ -6,8 +6,8 @@ edition = "2021"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0.94"
|
anyhow = "1.0.94"
|
||||||
oxc = { workspace = true }
|
oxc = { workspace = true }
|
||||||
|
url = { workspace = true }
|
||||||
rewriter = { version = "0.1.0", path = "../rewriter", features = ["debug"] }
|
rewriter = { version = "0.1.0", path = "../rewriter", features = ["debug"] }
|
||||||
url = "2.5.4"
|
|
||||||
urlencoding = "2.1.3"
|
urlencoding = "2.1.3"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 8.6 MiB After Width: | Height: | Size: 8.8 MiB |
|
@ -30,30 +30,27 @@ fn dorewrite(data: &str) -> Result<RewriteResult> {
|
||||||
|
|
||||||
capture_errors: true,
|
capture_errors: true,
|
||||||
do_sourcemaps: true,
|
do_sourcemaps: true,
|
||||||
scramitize: false,
|
scramitize: true,
|
||||||
strict_rewrites: true,
|
strict_rewrites: true,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.context("failed to rewrite file")
|
.context("failed to rewrite file")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dobench(data: String) {
|
|
||||||
loop {
|
|
||||||
let _ = dorewrite(&data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
let file = env::args().nth(1).unwrap_or_else(|| "test.js".to_string());
|
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 data = fs::read_to_string(file).context("failed to read file")?;
|
||||||
let bench = env::args().nth(2).is_some();
|
let bench = env::args().nth(2).is_some();
|
||||||
|
|
||||||
if bench {
|
if bench {
|
||||||
for _ in 0..15 {
|
let mut i = 0;
|
||||||
let data = data.clone();
|
loop {
|
||||||
std::thread::spawn(move || dobench(data));
|
let _ = dorewrite(&data);
|
||||||
|
i += 1;
|
||||||
|
if i % 100 == 0 {
|
||||||
|
println!("{}...", i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
dobench(data);
|
|
||||||
} else {
|
} else {
|
||||||
let res = dorewrite(&data)?;
|
let res = dorewrite(&data)?;
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
oxc = { workspace = true }
|
oxc = { workspace = true }
|
||||||
|
url = { workspace = true }
|
||||||
smallvec = "1.13.2"
|
smallvec = "1.13.2"
|
||||||
thiserror = "2.0.6"
|
thiserror = "2.0.6"
|
||||||
url = "2.5.4"
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
debug = []
|
debug = []
|
||||||
|
|
|
@ -361,11 +361,15 @@ pub(crate) struct JsChanges {
|
||||||
|
|
||||||
impl JsChanges {
|
impl JsChanges {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self { inner: Vec::new() }
|
Self {
|
||||||
|
inner: Default::default(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add(&mut self, change: Rewrite) {
|
pub fn add(&mut self, rewrite: Rewrite) {
|
||||||
self.inner.extend(change.into_inner());
|
for change in rewrite.into_inner() {
|
||||||
|
self.inner.push(change);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn perform<E>(&mut self, js: &str, cfg: &Config<E>) -> Result<JsChangeResult, RewriterError>
|
pub fn perform<E>(&mut self, js: &str, cfg: &Config<E>) -> Result<JsChangeResult, RewriterError>
|
||||||
|
@ -374,7 +378,7 @@ impl JsChanges {
|
||||||
E: Clone,
|
E: Clone,
|
||||||
{
|
{
|
||||||
let mut offset = 0;
|
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 {
|
macro_rules! tryget {
|
||||||
($range:expr) => {
|
($range:expr) => {
|
||||||
|
@ -385,7 +389,7 @@ impl JsChanges {
|
||||||
// TODO: add sourcemaps
|
// TODO: add sourcemaps
|
||||||
let map = Vec::with_capacity(js.len() * 2);
|
let map = Vec::with_capacity(js.len() * 2);
|
||||||
|
|
||||||
self.inner.sort();
|
self.inner.sort_unstable();
|
||||||
|
|
||||||
for change in &self.inner {
|
for change in &self.inner {
|
||||||
let span = change.get_span();
|
let span = change.get_span();
|
||||||
|
|
|
@ -10,9 +10,9 @@ crate-type = ["cdylib"]
|
||||||
instant = { version = "0.1.13", features = ["wasm-bindgen"] }
|
instant = { version = "0.1.13", features = ["wasm-bindgen"] }
|
||||||
js-sys = "0.3.76"
|
js-sys = "0.3.76"
|
||||||
oxc = { workspace = true }
|
oxc = { workspace = true }
|
||||||
|
url = { workspace = true }
|
||||||
rewriter = { version = "0.1.0", path = "../rewriter" }
|
rewriter = { version = "0.1.0", path = "../rewriter" }
|
||||||
thiserror = "2.0.6"
|
thiserror = "2.0.6"
|
||||||
url = "2.5.4"
|
|
||||||
wasm-bindgen = "0.2.99"
|
wasm-bindgen = "0.2.99"
|
||||||
web-sys = { version = "0.3.76", features = ["Url"] }
|
web-sys = { version = "0.3.76", features = ["Url"] }
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue