mirror of
https://github.com/RGBCube/dix
synced 2025-07-28 12:17:45 +00:00
src/main.rs: clean up thread handles
This commit is contained in:
parent
7ff637450d
commit
5b304cd7bb
1 changed files with 25 additions and 23 deletions
48
src/main.rs
48
src/main.rs
|
@ -42,29 +42,32 @@ fn main() {
|
||||||
println!(">>> {}", args.path2.to_string_lossy());
|
println!(">>> {}", args.path2.to_string_lossy());
|
||||||
|
|
||||||
// handles to the threads collecting closure size information
|
// handles to the threads collecting closure size information
|
||||||
let mut csize_pre_handle = None;
|
// We do this as early as possible because nix is slow.
|
||||||
let mut csize_post_handle = None;
|
let closure_size_handles = if args.closure_size {
|
||||||
|
let path = args.path.clone();
|
||||||
|
let path2 = args.path2.clone();
|
||||||
|
Some((
|
||||||
|
thread::spawn(move || get_closure_size(&path)),
|
||||||
|
thread::spawn(move || get_closure_size(&path2)),
|
||||||
|
))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
// get closure size in the background to increase performance
|
let package_list_pre = get_packages(&args.path);
|
||||||
if args.closure_size {
|
let package_list_post = get_packages(&args.path2);
|
||||||
let (p1, p2) = (args.path.clone(), args.path2.clone());
|
|
||||||
csize_pre_handle = Some(thread::spawn(move || get_closure_size(&p1)));
|
|
||||||
csize_post_handle = Some(thread::spawn(move || get_closure_size(&p2)));
|
|
||||||
}
|
|
||||||
|
|
||||||
let packages = get_packages(&args.path);
|
if let (Ok(package_list_pre), Ok(package_list_post)) = (package_list_pre, package_list_post) {
|
||||||
let packages2 = get_packages(&args.path2);
|
|
||||||
|
|
||||||
if let (Ok(packages), Ok(packages2)) = (packages, packages2) {
|
|
||||||
// Map from packages of the first closure to their version
|
// Map from packages of the first closure to their version
|
||||||
|
|
||||||
let mut pre = HashMap::<&str, HashSet<&str>>::new();
|
let mut pre = HashMap::<&str, HashSet<&str>>::new();
|
||||||
for p in &packages {
|
let mut post = HashMap::<&str, HashSet<&str>>::new();
|
||||||
|
|
||||||
|
for p in &package_list_pre {
|
||||||
let (name, version) = get_version(&**p);
|
let (name, version) = get_version(&**p);
|
||||||
pre.entry(name).or_default().insert(version);
|
pre.entry(name).or_default().insert(version);
|
||||||
}
|
}
|
||||||
|
for p in &package_list_post {
|
||||||
let mut post = HashMap::<&str, HashSet<&str>>::new();
|
|
||||||
for p in &packages2 {
|
|
||||||
let (name, version) = get_version(&**p);
|
let (name, version) = get_version(&**p);
|
||||||
post.entry(name).or_default().insert(version);
|
post.entry(name).or_default().insert(version);
|
||||||
}
|
}
|
||||||
|
@ -140,15 +143,14 @@ fn main() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if args.closure_size {
|
if let Some((pre_handle, post_handle)) = closure_size_handles {
|
||||||
let closure_size_pre = csize_pre_handle.unwrap().join().unwrap() as i64;
|
let pre_size = pre_handle.join().unwrap();
|
||||||
let closure_size_post = csize_post_handle.unwrap().join().unwrap() as i64;
|
let post_size = post_handle.join().unwrap();
|
||||||
|
|
||||||
println!("{}", "Closure Size:".underline().bold());
|
println!("{}", "Closure Size:".underline().bold());
|
||||||
|
println!("Before: {pre_size} MiB");
|
||||||
println!("Before: {} MiB", closure_size_pre);
|
println!("After: {post_size} MiB");
|
||||||
println!("After: {} MiB", closure_size_post);
|
println!("Difference: {} MiB", post_size - pre_size);
|
||||||
println!("Difference: {} MiB", closure_size_post - closure_size_pre);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue