Skip to content

Commit 718be19

Browse files
committed
ar: measure ReadCache performance
1 parent 8b5e954 commit 718be19

File tree

2 files changed

+39
-27
lines changed

2 files changed

+39
-27
lines changed

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ cargo-all = []
8484
# stable interface of this crate.
8585
rustc-dep-of-std = ['core', 'compiler_builtins', 'alloc']
8686

87+
[profile.release]
88+
debug = true
89+
8790
[[example]]
8891
name = "ar"
8992
required-features = ["read_core", "archive"]

examples/ar.rs

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,43 @@ fn main() {
1313
let op = args.next().unwrap();
1414
let file_path = args.next().unwrap();
1515

16-
let file = match fs::File::open(&file_path) {
17-
Ok(file) => file,
18-
Err(err) => {
19-
println!("Failed to open file '{}': {}", file_path, err,);
20-
return;
21-
}
22-
};
23-
let file = match unsafe { memmap::Mmap::map(&file) } {
24-
Ok(mmap) => mmap,
25-
Err(err) => {
26-
println!("Failed to map file '{}': {}", file_path, err,);
27-
return;
28-
}
29-
};
30-
let archive = match object::read::archive::ArchiveFile::parse(&*file) {
31-
Ok(file) => file,
32-
Err(err) => {
33-
println!("Failed to parse file '{}': {}", file_path, err);
34-
return;
35-
}
36-
};
37-
match op.chars().next().unwrap() {
38-
't' => {
39-
for member in archive.members() {
40-
let member = member.unwrap();
41-
println!("{}", String::from_utf8_lossy(member.name()));
16+
for _ in 0..100_000 {
17+
let file = match fs::File::open(&file_path) {
18+
Ok(file) => file,
19+
Err(err) => {
20+
println!("Failed to open file '{}': {}", file_path, err,);
21+
return;
22+
}
23+
};
24+
25+
/*
26+
let map = match unsafe { memmap::Mmap::map(&file) } {
27+
Ok(mmap) => mmap,
28+
Err(err) => {
29+
println!("Failed to map file '{}': {}", file_path, err,);
30+
return;
31+
}
32+
};
33+
let data = &*map;
34+
*/
35+
36+
let cache = object::ReadCache::new(file);
37+
let data = &cache;
38+
39+
let archive = match object::read::archive::ArchiveFile::parse(data) {
40+
Ok(data) => data,
41+
Err(err) => {
42+
println!("Failed to parse file '{}': {}", file_path, err);
43+
return;
44+
}
45+
};
46+
match op.chars().next().unwrap() {
47+
't' => {
48+
for member in archive.members() {
49+
member.unwrap();
50+
}
4251
}
52+
op => println!("Invalid operation: {}", op),
4353
}
44-
op => println!("Invalid operation: {}", op),
4554
}
4655
}

0 commit comments

Comments
 (0)