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
36
37
38
39
40
41
42
pub trait QPS {
fn qps(&self, total: u64);
fn time(&self, total: u64);
fn cost(&self);
}
impl QPS for std::time::Instant {
fn qps(&self, total: u64) {
let time = self.elapsed();
println!(
"use QPS: {} QPS/s",
(total as u128 * 1000000000 as u128 / time.as_nanos() as u128)
);
}
fn time(&self, total: u64) {
let time = self.elapsed();
println!(
"use Time: {:?} ,each:{} ns/op",
&time,
time.as_nanos() / (total as u128)
);
}
fn cost(&self) {
let time = self.elapsed();
println!("cost:{:?}", time);
}
}
#[macro_export]
macro_rules! bench {
($total:expr,$body:block) => {{
use rbatis::utils::bencher::QPS;
let now = std::time::Instant::now();
for _ in 0..$total {
$body;
}
now.time($total);
now.qps($total);
}};
}