File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments