Skip to content

Commit 4f00b19

Browse files
aw-transform: Add benchmark for filter_period_intersect
1 parent eabcf74 commit 4f00b19

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

aw-transform/benches/bench.rs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#![feature(test)]
2+
extern crate aw_models;
3+
extern crate aw_transform;
4+
extern crate serde_json;
5+
extern crate test;
6+
7+
use chrono::Duration;
8+
use serde_json::json;
9+
use serde_json::Map;
10+
use serde_json::Value;
11+
use test::Bencher;
12+
13+
use aw_models::Event;
14+
use aw_transform::*;
15+
16+
// TODO: Move me to an appropriate place
17+
#[macro_export]
18+
macro_rules! json_map {
19+
{ $( $key:literal : $value:expr),* } => {{
20+
use serde_json::Value;
21+
use serde_json::map::Map;
22+
#[allow(unused_mut)]
23+
let mut map : Map<String, Value> = Map::new();
24+
$(
25+
map.insert( $key.to_string(), json!($value) );
26+
)*
27+
map
28+
}};
29+
}
30+
31+
fn create_events(num_events: i64) -> Vec<Event> {
32+
let mut possible_data = Vec::<Map<String, Value>>::new();
33+
for i in 0..20 {
34+
possible_data.push(json_map! {"number": i});
35+
}
36+
let mut event_list = Vec::new();
37+
for i in 0..num_events {
38+
let e = Event {
39+
id: None,
40+
timestamp: chrono::Utc::now() + Duration::seconds(i),
41+
duration: Duration::seconds(10),
42+
data: possible_data[i as usize % 20].clone(),
43+
};
44+
event_list.push(e);
45+
}
46+
event_list
47+
}
48+
49+
#[bench]
50+
fn bench_filter_period_intersect(b: &mut Bencher) {
51+
let events2 = create_events(1000);
52+
b.iter(|| {
53+
let events1 = create_events(1000);
54+
filter_period_intersect(&events1, &events2);
55+
});
56+
}

0 commit comments

Comments
 (0)