minify-html/bench/runners/minify-html/src/main.rs

45 lines
1.1 KiB
Rust
Raw Normal View History

2021-08-08 07:01:37 -04:00
use std::io::stdout;
use std::time::Instant;
2021-08-09 05:56:37 -04:00
use std::{env, fs};
2021-08-08 07:01:37 -04:00
2021-08-09 05:56:37 -04:00
use minify_html::{minify, Cfg};
2021-08-08 07:01:37 -04:00
fn main() {
2021-08-09 05:56:37 -04:00
let iterations = env::var("MHB_ITERATIONS")
.unwrap()
.parse::<usize>()
.unwrap();
2021-08-08 07:01:37 -04:00
let input_dir = env::var("MHB_INPUT_DIR").unwrap();
2021-08-09 05:56:37 -04:00
let html_only = env::var("MHB_HTML_ONLY")
.ok()
.filter(|v| v == "1")
.is_some();
2021-08-08 07:01:37 -04:00
let tests = fs::read_dir(input_dir).unwrap().map(|d| d.unwrap());
2021-08-08 09:11:05 -04:00
let mut results: Vec<(String, usize, usize, f64)> = Vec::new();
2021-08-08 07:01:37 -04:00
let mut cfg = Cfg::new();
if !html_only {
cfg.minify_css = true;
cfg.minify_js = true;
};
for t in tests {
let source = fs::read(t.path()).unwrap();
let start = Instant::now();
2021-08-08 09:11:05 -04:00
let mut len = 0;
2021-08-08 07:01:37 -04:00
for _ in 0..iterations {
2021-08-08 09:11:05 -04:00
len = minify(&source, &cfg).len();
2021-08-09 05:56:37 -04:00
}
2021-08-08 07:01:37 -04:00
let elapsed = start.elapsed().as_secs_f64();
2021-08-09 05:56:37 -04:00
results.push((
t.file_name().into_string().unwrap(),
len,
iterations,
elapsed,
));
}
2021-08-08 07:01:37 -04:00
serde_json::to_writer(stdout(), &results).unwrap();
}