1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#[macro_export]
macro_rules! codspeed_uri {
( $name:ident ) => {
format!("{}::{}", file!(), stringify!($name))
};
( $function:path ) => {
format!("{}::{}", file!(), stringify!($function))
};
}
#[macro_export]
macro_rules! codspeed_bench {
( $name:ident, $bench_payload:expr) => {
pub fn $name(codspeed: &mut $crate::codspeed::CodSpeed) {
let uri = codspeed::codspeed_uri!($name);
codspeed.start_benchmark(uri.as_str());
$crate::codspeed::black_box($bench_payload());
codspeed.end_benchmark();
}
};
}
#[macro_export]
macro_rules! codspeed_main {
( $( $target:path ),+ $(,)* ) => {
fn main() {
$crate::codspeed::display_native_harness();
let mut codspeed = $crate::codspeed::CodSpeed::new();
$(
$target(&mut codspeed);
)+
}
}
}