1use lognplot::time::TimeStamp;
2use lognplot::tsdb::{Observation, Query, Sample, TsDb};
6use std::time::Instant;
7
8fn main() {
9 let mut db = TsDb::new();
10
11 insertions(&mut db);
12 do_query(&db);
13}
14
15fn insertions(db: &mut TsDb) {
16 let num_insertions = 1_000_000;
17 println!(
18 "Created database, now inserting {} data points into a signal.",
19 num_insertions
20 );
21
22 db.new_trace("fu");
23 let t1 = Instant::now();
24 for i in 0..num_insertions {
25 let ts = TimeStamp::new(i as f64);
26 let sample = Sample::new(i as f64);
27 let observation = Observation::new(ts, sample);
28 db.add_value("fu", observation);
29 }
30 let t2 = Instant::now();
31 let time_delta = t2 - t1;
32 let time_delta = time_delta.as_secs_f64();
33
34 println!(
35 "Inserted {} points in {} seconds.",
36 num_insertions, time_delta
37 );
38 let rate = num_insertions as f64 / time_delta;
39 println!("That means {} mega-points per second.", rate / 1.0e6);
40}
41
42fn do_query(db: &TsDb) {
43 println!("Querying the database!");
45
46 let query = Query::create()
47 .start(TimeStamp::new(0.0))
48 .end(TimeStamp::new(1000.0))
49 .build();
50 let result = db.query("fu", query);
51
52 println!("Got result: {:?}", result.query);
53 println!("Num result: {:?}", result.len());
54 }