#[cfg(not(target_arch = "wasm32"))]
use minigraf::OpenOptions;
#[cfg(not(target_arch = "wasm32"))]
fn main() -> anyhow::Result<()> {
let n: usize = std::env::args()
.nth(1)
.and_then(|s| s.parse().ok())
.unwrap_or(10_000);
let dir = tempfile::tempdir()?;
let path = dir.path().join("profile.graph");
let path_str = path.to_str().unwrap();
let db = OpenOptions {
wal_checkpoint_threshold: usize::MAX,
..Default::default()
}
.page_cache_size(256)
.path(path_str)
.open()?;
const BATCH: usize = 100;
for batch_start in (0..n).step_by(BATCH) {
let batch_end = (batch_start + BATCH).min(n);
let mut cmd = String::from("(transact [");
for i in batch_start..batch_end {
cmd.push_str(&format!("[:e{} :val {}]", i, i));
}
cmd.push_str("])");
db.execute(&cmd)?;
}
db.checkpoint()?;
let _ = db.execute("(query [:find ?v :where [:e0 :val ?v]])")?;
eprintln!("memory_profile: inserted and queried {} facts", n);
Ok(())
}
#[cfg(target_arch = "wasm32")]
fn main() {}