File tree 1 file changed +56
-0
lines changed
1 file changed +56
-0
lines changed 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