1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 07:14:47 -05:00

Add rlib size benchmarks (#9005)

This commit is contained in:
Ryan Dahl 2021-01-05 16:28:51 -05:00 committed by GitHub
parent 46c0cab763
commit 096e090576
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -169,6 +169,28 @@ fn run_exec_time(deno_exe: &PathBuf, target_dir: &PathBuf) -> Result<Value> {
Ok(Value::Object(results))
}
fn rlib_size(target_dir: &std::path::Path, prefix: &str) -> u64 {
let mut size = 0;
let mut seen = std::collections::HashSet::new();
for entry in std::fs::read_dir(target_dir.join("deps")).unwrap() {
let entry = entry.unwrap();
let os_str = entry.file_name();
let name = os_str.to_str().unwrap();
if name.starts_with(prefix) && name.ends_with(".rlib") {
let start = name.split('-').next().unwrap().to_string();
if seen.contains(&start) {
println!("skip {}", name);
} else {
seen.insert(start);
size += entry.metadata().unwrap().len();
println!("check size {} {}", name, size);
}
}
}
assert!(size > 0);
size
}
const BINARY_TARGET_FILES: &[&str] =
&["CLI_SNAPSHOT.bin", "COMPILER_SNAPSHOT.bin"];
fn get_binary_sizes(target_dir: &PathBuf) -> Result<Value> {
@ -180,6 +202,18 @@ fn get_binary_sizes(target_dir: &PathBuf) -> Result<Value> {
Value::Number(Number::from(test_util::deno_exe_path().metadata()?.len())),
);
// add up size for everything in target/release/deps/libswc*
let swc_size = rlib_size(&target_dir, "libswc");
println!("swc {} bytes", swc_size);
sizes.insert("swc_rlib".to_string(), Value::Number(swc_size.into()));
let rusty_v8_size = rlib_size(&target_dir, "librusty_v8");
println!("rusty_v8 {} bytes", rusty_v8_size);
sizes.insert(
"rusty_v8_rlib".to_string(),
Value::Number(rusty_v8_size.into()),
);
// Because cargo's OUT_DIR is not predictable, search the build tree for
// snapshot related files.
for file in walkdir::WalkDir::new(target_dir) {
@ -386,6 +420,9 @@ fn main() -> Result<()> {
let mut new_data: Map<String, Value> = Map::new();
new_data.insert("binary_size".to_string(), get_binary_sizes(&target_dir)?);
new_data.insert("bundle_size".to_string(), bundle_benchmark(&deno_exe)?);
new_data.insert(
"created_at".to_string(),
Value::String(
@ -416,9 +453,6 @@ fn main() -> Result<()> {
run_exec_time(&deno_exe, &target_dir)?,
);
new_data.insert("binary_size".to_string(), get_binary_sizes(&target_dir)?);
new_data.insert("bundle_size".to_string(), bundle_benchmark(&deno_exe)?);
// Cannot run throughput benchmark on windows because they don't have nc or
// pipe.
if cfg!(not(target_os = "windows")) {