-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfloat.rs
80 lines (69 loc) · 2.63 KB
/
float.rs
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#![allow(dead_code)]
use anyhow::Result;
use chrono::{DateTime, DurationRound, Utc};
use deadpool_postgres::Client;
use std::collections::HashMap;
use std::str::FromStr;
use std::time::{Duration, Instant, SystemTime};
use tokio_postgres::binary_copy::BinaryCopyInWriter;
use tokio_postgres::types::{ToSql, Type};
mod float {
use super::*;
pub mod mult;
pub mod round;
}
use float::*;
static DB_POOL: std::sync::LazyLock<std::sync::Arc<deadpool_postgres::Pool>> = std::sync::LazyLock::new(|| {
let url = std::env::var("DATABASE_URL").unwrap_or("postgresql://localhost:5432/postgres".to_string());
let pg_config = tokio_postgres::Config::from_str(&url).unwrap();
let mgr_config = deadpool_postgres::ManagerConfig { recycling_method: deadpool_postgres::RecyclingMethod::Fast };
let mgr = deadpool_postgres::Manager::from_config(pg_config, tokio_postgres::NoTls, mgr_config);
deadpool_postgres::Pool::builder(mgr).build().unwrap().into()
});
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<()> {
println!("====== float");
println!("== round(0)");
let start = Instant::now();
round::store(0).await?;
println!("compressed after {:.1?}", start.elapsed());
let start = Instant::now();
round::load(0).await?;
println!("decompressed after {:.1?}", start.elapsed());
println!("== round(1)");
let start = Instant::now();
round::store(1).await?;
println!("compressed after {:.1?}", start.elapsed());
let start = Instant::now();
round::load(1).await?;
println!("decompressed after {:.1?}", start.elapsed());
println!("== round(2)");
let start = Instant::now();
round::store(2).await?;
println!("compressed after {:.1?}", start.elapsed());
let start = Instant::now();
round::load(2).await?;
println!("decompressed after {:.1?}", start.elapsed());
println!("== mult(1)");
let start = Instant::now();
mult::store(1).await?;
println!("compressed after {:.1?}", start.elapsed());
let start = Instant::now();
mult::load(1).await?;
println!("decompressed after {:.1?}", start.elapsed());
println!("== mult(10)");
let start = Instant::now();
mult::store(10).await?;
println!("compressed after {:.1?}", start.elapsed());
let start = Instant::now();
mult::load(10).await?;
println!("decompressed after {:.1?}", start.elapsed());
println!("== mult(100)");
let start = Instant::now();
mult::store(100).await?;
println!("compressed after {:.1?}", start.elapsed());
let start = Instant::now();
mult::load(100).await?;
println!("decompressed after {:.1?}", start.elapsed());
Ok(())
}