diff options
Diffstat (limited to 'graph-checker/src/main.rs')
| -rw-r--r-- | graph-checker/src/main.rs | 76 |
1 files changed, 46 insertions, 30 deletions
diff --git a/graph-checker/src/main.rs b/graph-checker/src/main.rs index a62143c..e73b23b 100644 --- a/graph-checker/src/main.rs +++ b/graph-checker/src/main.rs @@ -1,6 +1,6 @@ // use std::io::{self, BufRead}; use rayon::prelude::*; -use sqlx::migrate::MigrateDatabase; +use sqlx::{migrate::MigrateDatabase, Pool, Sqlite}; // use std::sync::{Arc, Mutex}; use std::time::Instant; use tokio; @@ -16,41 +16,55 @@ use crate::geng::GengIterator; mod compute; -#[tokio::main] -async fn main() -> Result<(), sqlx::Error> { +mod gui; + +fn main() -> Result<(), sqlx::Error> { dotenv::dotenv().ok(); - let database_url = - std::env::var("DATABASE_URL").expect("Expected DATABASE_URL in env"); - if !sqlx::Sqlite::database_exists(&database_url).await? { - sqlx::Sqlite::create_database(&database_url).await?; - } - let db = sqlx::SqlitePool::connect(&database_url).await?; - let _ = sqlx::query!( - "CREATE TABLE IF NOT EXISTS graphs (g6 VARCHAR NOT NULL);" - ) - .execute(&db) - .await; - // let mut counters = Arc::new(Mutex::new(Counters::new())); + let rt = tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .unwrap(); - // gi.par_bridge().for_each(|_| {}); + let db = rt.block_on(async { + let database_url = std::env::var("DATABASE_URL") + .expect("Expected DATABASE_URL in env"); + if !sqlx::Sqlite::database_exists(&database_url).await? { + sqlx::Sqlite::create_database(&database_url).await?; + } + let db = sqlx::SqlitePool::connect(&database_url).await?; + let _ = sqlx::query!( + "CREATE TABLE IF NOT EXISTS graphs (g6 VARCHAR NOT NULL);" + ) + .execute(&db) + .await; + Ok::<Pool<Sqlite>, sqlx::Error>(db) + })?; - let gi = GengIterator::new(9); + gui::run_gui(rt); + // let gui_task = tokio::spawn(gui::run_gui()); + println!("next"); - let start = Instant::now(); - let tasks: Vec<_> = gi - .map(|g| { - // let db = db.clone(); - tokio::spawn(compute::async_theorems1(g)) - }) - .collect(); + // let mut counters = Arc::new(Mutex::new(Counters::new())); - let res = futures::future::join_all(tasks).await; - let elapsed = start.elapsed(); - let time = elapsed.as_nanos(); - let res = res.iter().map(|e| e.as_ref().unwrap()).collect::<Vec<_>>(); - println!("len = {}", res.len()); - println!("Time elapsed: {}s", time as f64 / 1e9); + // gi.par_bridge().for_each(|_| {}); + + // let gi = GengIterator::new(7); + // + // let start = Instant::now(); + // let tasks: Vec<_> = gi + // .map(|g| { + // // let db = db.clone(); + // tokio::spawn(compute::async_theorems1(g)) + // }) + // .collect(); + // + // let res = futures::future::join_all(tasks).await; + // let elapsed = start.elapsed(); + // let time = elapsed.as_nanos(); + // let res = res.iter().map(|e| e.as_ref().unwrap()).collect::<Vec<_>>(); + // println!("len = {}", res.len()); + // println!("Time elapsed: {}s", time as f64 / 1e9); // let start = Instant::now(); // let res = gi @@ -63,6 +77,8 @@ async fn main() -> Result<(), sqlx::Error> { // println!("len = {}", res.len()); // println!("Time elapsed: {}s", time as f64 / 1e9); + // let _ = gui_task.await; + /* println!("Total count of graphs: {}", counters.graphs); println!("Count of 1-tough graphs: {}", counters.tough_1); |