Debugging put
[?]
Jan 31, 2021, 6:34 PM
EAAYH6BQWDK52EC5RG3BEZQU3FJPN5RRRN4U5KDKDVPKXBVJMNDACDependencies
- [2]
WS4ZQM4RDebugging, tests, etc. - [3]
FMN7X4J2Micro-improvements, now noticeably faster than std::collections::BTreeMap - [4]
OP6SVMODResetting history - [5]
EHJFNMB2Debugging
Change contents
- replacement in sanakirja-core/src/btree/page.rs at line 63
impl<T: AllocPage, K: Representable<T>, V: Representable<T>> super::BTreeMutPage<T, K, V>impl<T: AllocPage + core::fmt::Debug, K: Representable<T> + core::fmt::Debug, V: Representable<T> + core::fmt::Debug> super::BTreeMutPage<T, K, V> - edit in sanakirja-core/src/btree/page.rs at line 154
debug!("del: {:?} {:?}", page, l); - replacement in sanakirja-core/src/btree/page.rs at line 188
let off = (p as *mut u64).offset(c.cur as isize - 1);let off = (p.add(HDR) as *mut u64).offset(c.cur as isize - 1); - replacement in sanakirja-core/src/btree/page.rs at line 192
hdr.set_n(u16::from_le((&*hdr).n) - 1);hdr.set_n(hdr.n() - 1); - replacement in sanakirja-core/src/btree/page.rs at line 569
fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize);fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize) -> Option<(*const K, *const V)>; - replacement in sanakirja-core/src/btree/page.rs at line 656
fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize) {fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize) -> Option<(*const K, *const V)> { - edit in sanakirja-core/src/btree/page.rs at line 663
- edit in sanakirja-core/src/btree/page.rs at line 666
let mut swap: core::mem::MaybeUninit<Tuple<K, V>> = core::mem::MaybeUninit::uninit();core::ptr::copy(page.0.data.add(hdr_size + (n-1) * f),swap.as_mut_ptr() as *mut u8,f,); - replacement in sanakirja-core/src/btree/page.rs at line 675
n * f,(hdr_n as usize - n) * f,);core::ptr::copy(swap.as_ptr() as *mut u8,page.0.data.add(hdr_size + (hdr_n as usize - n) * f),f, - replacement in sanakirja-core/src/btree/page.rs at line 683
debug!("{:?}-{:?}", hdr_n, n);debug!("{:?} - {:?}", hdr_n, n); - edit in sanakirja-core/src/btree/page.rs at line 687
unsafe {Some(read::<T, K, V>(page.0.data.add(hdr_size + (hdr_n as usize - n) * f)))} - replacement in sanakirja-core/src/btree/page.rs at line 696
n * 2,(hdr_n as usize - n) * 2, - edit in sanakirja-core/src/btree/page.rs at line 711
None - replacement in sanakirja-core/src/btree/page.rs at line 809
fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize) {fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize) -> Option<(*const K, *const V)> { - edit in sanakirja-core/src/btree/page.rs at line 812
let hdr_n = header_mut(page).n(); - replacement in sanakirja-core/src/btree/page.rs at line 817
(n + 1) * 8,(hdr_n as usize - n + 1) * 8, - edit in sanakirja-core/src/btree/page.rs at line 820
let hdr_n = header_mut(page).n(); - edit in sanakirja-core/src/btree/page.rs at line 835
debug!("truncate_left {:?} {:?}", hdr.left_page(), size); - replacement in sanakirja-core/src/btree/page.rs at line 837
None - replacement in sanakirja-core/src/btree/page.rs at line 905
unsafe fn modify<T: LoadPage, K: Representable<T>, V: Representable<T>, L: Alloc>(unsafe fn modify<T: LoadPage + core::fmt::Debug, K: Representable<T> + core::fmt::Debug, V: Representable<T> + core::fmt::Debug, L: Alloc>( - edit in sanakirja-core/src/btree/page.rs at line 910
debug!("modify {:?}", m); - replacement in sanakirja-core/src/btree/page.rs at line 932
unsafe fn merge<T: LoadPage, K: Representable<T>, V: Representable<T>, L: Alloc>(unsafe fn merge<T: LoadPage + core::fmt::Debug, K: Representable<T> + core::fmt::Debug, V: Representable<T> + core::fmt::Debug, L: Alloc>( - replacement in sanakirja-core/src/btree/page.rs at line 957
fn rebalance<'a, T: AllocPage, K: Representable<T>, V: Representable<T>, L: Alloc>(fn rebalance<'a, T: AllocPage + core::fmt::Debug, K: Representable<T> + core::fmt::Debug, V: Representable<T> + core::fmt::Debug, L: Alloc>( - replacement in sanakirja-core/src/btree/page.rs at line 1097
fn put<'a, T: AllocPage, K: Representable<T>, V: Representable<T>, L: Alloc>(fn put<'a, T: AllocPage + core::fmt::Debug, K: Representable<T> + core::fmt::Debug, V: Representable<T> + core::fmt::Debug, L: Alloc>( - replacement in sanakirja-core/src/btree/page.rs at line 1144
fn split<'a, T: AllocPage, K: Representable<T>, V: Representable<T>, L: Alloc>(fn split<'a, T: AllocPage + core::fmt::Debug, K: Representable<T> + core::fmt::Debug, V: Representable<T> + core::fmt::Debug, L: Alloc>( - replacement in sanakirja-core/src/btree/page.rs at line 1160
let n = hdr.n() + 1;let mut n = hdr.n(); - edit in sanakirja-core/src/btree/page.rs at line 1162
n += 1; - replacement in sanakirja-core/src/btree/page.rs at line 1165
let (split_key, split_value, mid_child, s1) = if u == k as usize {debug!("u = {:?}, k = {:?} {:?} {:?}", u, k, s0, s1);let (mut split_key, mut split_value, mid_child, s1) = if u == k as usize { - replacement in sanakirja-core/src/btree/page.rs at line 1172
(&*k, &*v, r, s1b)debug!("k = {:?}, v = {:?} r = {:?}", k, v, r);debug!("k = {:?}", k as *const K as *const u8);(k, v, r, s1b) - replacement in sanakirja-core/src/btree/page.rs at line 1207
// Insertion in the middle.// Insertion in the middle:// - `l` becomes the right child of the last element on `left`.L::set_right_child(&mut left, k as isize - 1, l);// - `r` (i.e. `mid_child`) becomes the left child of `right`. - replacement in sanakirja-core/src/btree/page.rs at line 1226
let mid = k as usize - u as usize;let (s0a, s0b) = s0.split_at(mid);let ll = header(page.as_page()).left_page() & !0xfff;L::set_right_child(&mut left, -1, ll);let (s0a, s0b) = s0.split_at(u as usize); - replacement in sanakirja-core/src/btree/page.rs at line 1230
alloc::<T, K, V, L>(&mut left, k0, v0, r, l, &mut n);alloc::<T, K, V, L>(&mut left, k0, v0, l, r, &mut n); - edit in sanakirja-core/src/btree/page.rs at line 1235
- replacement in sanakirja-core/src/btree/page.rs at line 1237
L::truncate_left::<T, K, V>(&mut right, k as usize);if let Some((k, v)) = L::truncate_left::<T, K, V>(&mut right, k as usize + 1) {unsafe {split_key = &*k;split_value = &*v;}} - replacement in sanakirja-core/src/btree/mod.rs at line 157
let page = Self::del(txn, m.page, &m.c1, m.l)?;Ok(Put::Ok(Ok {freed: if page.0.offset != m.page.offset {m.page.offset} else {0},page,}))if m.skip_first {let page = Self::del(txn, m.page, &m.c1, m.l)?;Ok(Put::Ok(Ok {freed: if page.0.offset != m.page.offset {m.page.offset} else {0},page,}))} else {Ok(Put::Ok(Self::update_left_child(txn, m.page, m.mutable, &m.c1, m.l)?))} - edit in sanakirja-core/src/btree/mod.rs at line 176
#[derive(Debug)] - edit in sanakirja-core/src/btree/mod.rs at line 264[3.52501]
pub fn fork_db<T: AllocPage,K: Representable<T>,V: Representable<T>,P: BTreeMutPage<T, K, V>,>(txn: &mut T,db: &Db<T, K, V, P>,) -> Result<Db<T, K, V, P>, T::Error> {txn.incr_rc(db.db.offset)?;Ok(Db {db: db.db,marker: core::marker::PhantomData,})} - replacement in sanakirja-core/src/btree/del.rs at line 110
match P::merge_or_rebalance(txn, &mut concat)? {let merge = P::merge_or_rebalance(txn, &mut concat)?;debug!("merge = {:?}", merge);match merge { - edit in sanakirja-core/src/btree/del.rs at line 210
debug!("single child {:?}", d); - edit in sanakirja-core/src/btree/del.rs at line 213
debug!("modify {:?}", last_op); - file deletion: main.rs
use log::*;use sanakirja::environment::*;use sanakirja_core::btree::*;use sanakirja_core::btree;use sanakirja_core::*;// mod parallel_benchmark;mod debug;fn main() {env_logger::init();main::main();// main::parallel_benchmark();}#[derive(Eq, PartialEq, PartialOrd, Ord)]struct A<T>([u64; 100], std::marker::PhantomData<T>);impl<T> std::fmt::Debug for A<T> {fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {write!(fmt, "A(…)")?;Ok(())}}impl<T> Representable<T> for A<T> {type PageOffsets = core::iter::Empty<u64>;fn page_offsets(&self) -> Self::PageOffsets {core::iter::empty()}const ALIGN: usize = core::mem::align_of::<Self>();const SIZE: Option<usize> = Some(core::mem::size_of::<Self>());type Ord = [u64; 100];fn ord(&self, _: &T) -> &Self::Ord {&self.0}fn size(&self) -> usize {core::mem::size_of::<Self>()}}type T<'a> = MutTxn<&'a Env<Exclusive>, ()>;mod main {use super::*;#[test]pub fn main() {env_logger::try_init().unwrap_or(());let env = Env::new_anon(409600000).unwrap();let mut txn = Env::mut_txn_begin(&env).unwrap();let now = std::time::SystemTime::now();for i in 0..n {debug!("put {:?}", i);}println!("moi: {:?}", now.elapsed());let mut btree = std::collections::BTreeMap::new();let now = std::time::SystemTime::now();for i in 0..n {}println!("std: {:?}", now.elapsed());/*std::mem::forget(txn);{let env = EnvBuilder::new().map_size(1 << 27).open("test-lmdb", 0o777).unwrap();let db_handle = env.get_default_db(DbFlags::empty()).unwrap();let txn = env.new_transaction().unwrap();{let db = txn.bind(&db_handle); // get a database bound to this transactionlet now = std::time::SystemTime::now();for i in 0..n {db.set(&(i * i), &(i * i * i)).unwrap();}println!("lmdb: {:?}", now.elapsed());}}*/}}*/btree.insert(i * i, i * i * i);let i = 500;debug!("deleting {:?}", (i*i)%1_000_000);del(&mut txn, &mut db, &((i * i) % 1_000_000), None).unwrap();debug::debug(&txn, &db, "debug", true);/*let a = A([i * i * i; 100], std::marker::PhantomData);put(&mut txn, &mut db, &((i * i) % 1_000_000), &a).unwrap();let mut db = create_db::<MutTxn<&Env<Exclusive>, ()>, u64, A<T>, B<T>>(&mut txn).unwrap();let n = 501;type B<T> = btree::page::Page<u64, A<T>>; - edit in sanakirja/src/lib.rs at line 4
#[cfg(test)]mod tests;mod debug; - replacement in sanakirja/src/environment/muttxn.rs at line 149
let root = env.root.lock();let mut root = env.root.lock(); - edit in sanakirja/src/environment/muttxn.rs at line 157
let mut root = env.root.lock();