Skip to content

Commit

Permalink
ar: measure ReadCache performance
Browse files Browse the repository at this point in the history
  • Loading branch information
philipc committed May 10, 2021
1 parent 8b5e954 commit 718be19
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 27 deletions.
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ cargo-all = []
# stable interface of this crate.
rustc-dep-of-std = ['core', 'compiler_builtins', 'alloc']

[profile.release]
debug = true

[[example]]
name = "ar"
required-features = ["read_core", "archive"]
Expand Down
63 changes: 36 additions & 27 deletions examples/ar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,43 @@ fn main() {
let op = args.next().unwrap();
let file_path = args.next().unwrap();

let file = match fs::File::open(&file_path) {
Ok(file) => file,
Err(err) => {
println!("Failed to open file '{}': {}", file_path, err,);
return;
}
};
let file = match unsafe { memmap::Mmap::map(&file) } {
Ok(mmap) => mmap,
Err(err) => {
println!("Failed to map file '{}': {}", file_path, err,);
return;
}
};
let archive = match object::read::archive::ArchiveFile::parse(&*file) {
Ok(file) => file,
Err(err) => {
println!("Failed to parse file '{}': {}", file_path, err);
return;
}
};
match op.chars().next().unwrap() {
't' => {
for member in archive.members() {
let member = member.unwrap();
println!("{}", String::from_utf8_lossy(member.name()));
for _ in 0..100_000 {
let file = match fs::File::open(&file_path) {
Ok(file) => file,
Err(err) => {
println!("Failed to open file '{}': {}", file_path, err,);
return;
}
};

/*
let map = match unsafe { memmap::Mmap::map(&file) } {
Ok(mmap) => mmap,
Err(err) => {
println!("Failed to map file '{}': {}", file_path, err,);
return;
}
};
let data = &*map;
*/

let cache = object::ReadCache::new(file);
let data = &cache;

let archive = match object::read::archive::ArchiveFile::parse(data) {
Ok(data) => data,
Err(err) => {
println!("Failed to parse file '{}': {}", file_path, err);
return;
}
};
match op.chars().next().unwrap() {
't' => {
for member in archive.members() {
member.unwrap();
}
}
op => println!("Invalid operation: {}", op),
}
op => println!("Invalid operation: {}", op),
}
}

0 comments on commit 718be19

Please sign in to comment.