Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
This commit is contained in:
217
vendor/rustix/benches/mod.rs
vendored
Normal file
217
vendor/rustix/benches/mod.rs
vendored
Normal file
@ -0,0 +1,217 @@
|
||||
//! Benchmarks for rustix.
|
||||
//!
|
||||
//! To enable these benchmarks, add `--cfg=criterion` to RUSTFLAGS and enable
|
||||
//! the "fs", "time", and "process" cargo features.
|
||||
//!
|
||||
//! ```sh
|
||||
//! RUSTFLAGS=--cfg=criterion cargo bench --features=fs,time,process,stdio
|
||||
//! ```
|
||||
|
||||
#[cfg(any(
|
||||
not(criterion),
|
||||
not(feature = "fs"),
|
||||
not(feature = "process"),
|
||||
not(feature = "time"),
|
||||
not(feature = "stdio"),
|
||||
windows,
|
||||
target_os = "emscripten",
|
||||
target_os = "redox",
|
||||
target_os = "wasi",
|
||||
))]
|
||||
fn main() {
|
||||
unimplemented!(
|
||||
"Add --cfg=criterion to RUSTFLAGS and enable the \"fs\", \"time\", \"process\", and \"stdio\" cargo \
|
||||
features."
|
||||
)
|
||||
}
|
||||
|
||||
#[cfg(not(any(
|
||||
not(criterion),
|
||||
not(feature = "fs"),
|
||||
not(feature = "process"),
|
||||
not(feature = "time"),
|
||||
not(feature = "stdio"),
|
||||
windows,
|
||||
target_os = "emscripten",
|
||||
target_os = "redox",
|
||||
target_os = "wasi",
|
||||
)))]
|
||||
use criterion::{criterion_group, criterion_main};
|
||||
|
||||
#[cfg(not(any(
|
||||
not(criterion),
|
||||
not(feature = "fs"),
|
||||
not(feature = "process"),
|
||||
not(feature = "time"),
|
||||
not(feature = "stdio"),
|
||||
windows,
|
||||
target_os = "emscripten",
|
||||
target_os = "redox",
|
||||
target_os = "wasi",
|
||||
)))]
|
||||
mod suite {
|
||||
use criterion::Criterion;
|
||||
|
||||
pub(super) fn simple_statat(c: &mut Criterion) {
|
||||
use rustix::fs::{statat, AtFlags, CWD};
|
||||
|
||||
c.bench_function("simple statat", |b| {
|
||||
b.iter(|| {
|
||||
statat(CWD, "/", AtFlags::empty()).unwrap();
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
pub(super) fn simple_statat_libc(c: &mut Criterion) {
|
||||
c.bench_function("simple statat libc", |b| {
|
||||
b.iter(|| {
|
||||
let mut s = std::mem::MaybeUninit::<libc::stat>::uninit();
|
||||
unsafe {
|
||||
assert_eq!(
|
||||
libc::fstatat(
|
||||
libc::AT_FDCWD,
|
||||
std::ffi::CString::new("/").unwrap().as_c_str().as_ptr() as _,
|
||||
s.as_mut_ptr(),
|
||||
0
|
||||
),
|
||||
0
|
||||
);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
pub(super) fn simple_statat_libc_cstr(c: &mut Criterion) {
|
||||
c.bench_function("simple statat libc cstr", |b| {
|
||||
b.iter(|| {
|
||||
let mut s = std::mem::MaybeUninit::<libc::stat>::uninit();
|
||||
unsafe {
|
||||
assert_eq!(
|
||||
libc::fstatat(
|
||||
libc::AT_FDCWD,
|
||||
rustix::cstr!("/").as_ptr() as _,
|
||||
s.as_mut_ptr(),
|
||||
0
|
||||
),
|
||||
0
|
||||
);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
pub(super) fn simple_statat_cstr(c: &mut Criterion) {
|
||||
use rustix::fs::{statat, AtFlags, CWD};
|
||||
|
||||
c.bench_function("simple statat cstr", |b| {
|
||||
b.iter(|| {
|
||||
statat(CWD, rustix::cstr!("/"), AtFlags::empty()).unwrap();
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
pub(super) fn simple_fstat(c: &mut Criterion) {
|
||||
use rustix::fs::fstat;
|
||||
|
||||
c.bench_function("simple fstat", |b| {
|
||||
b.iter(|| {
|
||||
fstat(rustix::stdio::stdin()).unwrap();
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
pub(super) fn simple_fstat_libc(c: &mut Criterion) {
|
||||
c.bench_function("simple fstat libc", |b| {
|
||||
b.iter(|| {
|
||||
let mut s = std::mem::MaybeUninit::<libc::stat>::uninit();
|
||||
unsafe {
|
||||
assert_eq!(libc::fstat(libc::STDIN_FILENO, s.as_mut_ptr()), 0);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
pub(super) fn simple_clock_gettime(c: &mut Criterion) {
|
||||
use rustix::time::{clock_gettime, ClockId};
|
||||
|
||||
c.bench_function("simple clock_gettime", |b| {
|
||||
b.iter(|| {
|
||||
let _ = clock_gettime(ClockId::Monotonic);
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
pub(super) fn simple_clock_gettime_libc(c: &mut Criterion) {
|
||||
c.bench_function("simple clock_gettime libc", |b| {
|
||||
b.iter(|| {
|
||||
let mut s = std::mem::MaybeUninit::<libc::timespec>::uninit();
|
||||
unsafe {
|
||||
assert_eq!(
|
||||
libc::clock_gettime(libc::CLOCK_MONOTONIC, s.as_mut_ptr()),
|
||||
0
|
||||
);
|
||||
let _ = s.assume_init();
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
pub(super) fn simple_getpid(c: &mut Criterion) {
|
||||
use rustix::process::getpid;
|
||||
|
||||
c.bench_function("simple getpid", |b| {
|
||||
b.iter(|| {
|
||||
let _ = getpid();
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
pub(super) fn simple_getpid_libc(c: &mut Criterion) {
|
||||
c.bench_function("simple getpid libc", |b| {
|
||||
b.iter(|| unsafe {
|
||||
let _ = libc::getpid();
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(any(
|
||||
not(criterion),
|
||||
not(feature = "fs"),
|
||||
not(feature = "process"),
|
||||
not(feature = "time"),
|
||||
not(feature = "stdio"),
|
||||
windows,
|
||||
target_os = "emscripten",
|
||||
target_os = "redox",
|
||||
target_os = "wasi",
|
||||
)))]
|
||||
criterion_group!(
|
||||
benches,
|
||||
suite::simple_statat,
|
||||
suite::simple_statat_libc,
|
||||
suite::simple_statat_libc_cstr,
|
||||
suite::simple_statat_cstr,
|
||||
suite::simple_fstat,
|
||||
suite::simple_fstat_libc,
|
||||
suite::simple_clock_gettime,
|
||||
suite::simple_clock_gettime_libc,
|
||||
suite::simple_getpid,
|
||||
suite::simple_getpid_libc
|
||||
);
|
||||
#[cfg(not(any(
|
||||
not(criterion),
|
||||
not(feature = "fs"),
|
||||
not(feature = "process"),
|
||||
not(feature = "time"),
|
||||
not(feature = "stdio"),
|
||||
windows,
|
||||
target_os = "emscripten",
|
||||
target_os = "redox",
|
||||
target_os = "wasi",
|
||||
)))]
|
||||
criterion_main!(benches);
|
Reference in New Issue
Block a user