From 6cef9f0fc159de4c9fd708050ec76adb4e74d390 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Fri, 27 Jan 2023 13:58:10 +0000 Subject: openat variant --- openat/benches/count_processes.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 openat/benches/count_processes.rs (limited to 'openat/benches') 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::().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::().ok())) + .is_some() + }).count() + }); +} -- cgit v1.2.3-54-g00ecf