diff options
Diffstat (limited to 'openat/benches/count_processes.rs')
-rw-r--r-- | openat/benches/count_processes.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/openat/benches/count_processes.rs b/openat/benches/count_processes.rs new file mode 100644 index 0000000..aa9f856 --- /dev/null +++ b/openat/benches/count_processes.rs @@ -0,0 +1,39 @@ +#![feature(test)] + +extern crate openat; +extern crate test; + + +use std::fs::read_dir; +use std::str::from_utf8; +use std::os::unix::ffi::OsStrExt; +use test::Bencher; + +use openat::Dir; + + +#[bench] +fn procs_stdlib(b: &mut Bencher) { + b.iter(|| { + read_dir("/proc").unwrap().filter(|r| { + r.as_ref().ok() + .and_then(|e| from_utf8(e.file_name().as_bytes()).ok() + // pid is everything that can be parsed as a number + .and_then(|s| s.parse::<u32>().ok())) + .is_some() + }).count() + }); +} + +#[bench] +fn procs_openat(b: &mut Bencher) { + b.iter(|| { + Dir::open("/proc").unwrap().list_dir(".").unwrap().filter(|r| { + r.as_ref().ok() + .and_then(|e| from_utf8(e.file_name().as_bytes()).ok() + // pid is everything that can be parsed as a number + .and_then(|s| s.parse::<u32>().ok())) + .is_some() + }).count() + }); +} |