pijul nest
guest [sign in]

Debugging put

[?]
Jan 31, 2021, 6:34 PM
EAAYH6BQWDK52EC5RG3BEZQU3FJPN5RRRN4U5KDKDVPKXBVJMNDAC

Dependencies

  • [2] WS4ZQM4R Debugging, tests, etc.
  • [3] FMN7X4J2 Micro-improvements, now noticeably faster than std::collections::BTreeMap
  • [4] OP6SVMOD Resetting history
  • [5] EHJFNMB2 Debugging

Change contents

  • replacement in sanakirja-core/src/btree/page.rs at line 63
    [3.9723][3.9723:9813]()
    impl<T: AllocPage, K: Representable<T>, V: Representable<T>> super::BTreeMutPage<T, K, V>
    [3.9723]
    [3.9813]
    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
    [2.2758]
    [3.12658]
    debug!("del: {:?} {:?}", page, l);
  • replacement in sanakirja-core/src/btree/page.rs at line 188
    [2.4301][2.4301:4375]()
    let off = (p as *mut u64).offset(c.cur as isize - 1);
    [2.4301]
    [3.14388]
    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
    [3.14580][2.4376:4428]()
    hdr.set_n(u16::from_le((&*hdr).n) - 1);
    [3.14580]
    [2.4428]
    hdr.set_n(hdr.n() - 1);
  • replacement in sanakirja-core/src/btree/page.rs at line 569
    [2.12507][2.12507:12604]()
    fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize);
    [2.12507]
    [2.12604]
    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
    [3.29731][2.13509:13607]()
    fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize) {
    [3.29731]
    [2.13607]
    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
    [2.13915]
    [2.13915]
  • edit in sanakirja-core/src/btree/page.rs at line 666
    [2.13936]
    [2.13936]
    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
    [2.14071][2.14071:14098]()
    n * f,
    [2.14071]
    [2.14098]
    (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
    [2.14131][2.14131:14174]()
    debug!("{:?}-{:?}", hdr_n, n);
    [2.14131]
    [2.14174]
    debug!("{:?} - {:?}", hdr_n, n);
  • edit in sanakirja-core/src/btree/page.rs at line 687
    [2.14327]
    [2.14327]
    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
    [2.14536][2.14536:14563]()
    n * 2,
    [2.14536]
    [2.14563]
    (hdr_n as usize - n) * 2,
  • edit in sanakirja-core/src/btree/page.rs at line 711
    [2.15141]
    [2.15141]
    None
  • replacement in sanakirja-core/src/btree/page.rs at line 809
    [3.32704][2.17264:17362]()
    fn truncate_left<T, K: Representable<T>, V: Representable<T>>(page: &mut MutPage, n: usize) {
    [3.32704]
    [2.17362]
    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
    [2.17471]
    [2.17471]
    let hdr_n = header_mut(page).n();
  • replacement in sanakirja-core/src/btree/page.rs at line 817
    [2.17611][2.17611:17640]()
    (n + 1) * 8,
    [2.17611]
    [2.17640]
    (hdr_n as usize - n + 1) * 8,
  • edit in sanakirja-core/src/btree/page.rs at line 820
    [2.17665][2.17665:17707]()
    let hdr_n = header_mut(page).n();
  • edit in sanakirja-core/src/btree/page.rs at line 835
    [2.18300]
    [2.18300]
    debug!("truncate_left {:?} {:?}", hdr.left_page(), size);
  • replacement in sanakirja-core/src/btree/page.rs at line 837
    [2.18369][2.18369:18370]()
    [2.18369]
    [2.18370]
    None
  • replacement in sanakirja-core/src/btree/page.rs at line 905
    [3.34631][3.34631:34714]()
    unsafe fn modify<T: LoadPage, K: Representable<T>, V: Representable<T>, L: Alloc>(
    [3.34631]
    [2.20093]
    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
    [3.34802]
    [2.20117]
    debug!("modify {:?}", m);
  • replacement in sanakirja-core/src/btree/page.rs at line 932
    [3.35449][3.35449:35531]()
    unsafe fn merge<T: LoadPage, K: Representable<T>, V: Representable<T>, L: Alloc>(
    [3.35449]
    [2.20505]
    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
    [3.36508][2.21350:21434]()
    fn rebalance<'a, T: AllocPage, K: Representable<T>, V: Representable<T>, L: Alloc>(
    [3.36508]
    [3.36599]
    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
    [3.40625][2.24079:24157]()
    fn put<'a, T: AllocPage, K: Representable<T>, V: Representable<T>, L: Alloc>(
    [3.40625]
    [3.40710]
    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
    [3.42146][2.25187:25267]()
    fn split<'a, T: AllocPage, K: Representable<T>, V: Representable<T>, L: Alloc>(
    [3.42146]
    [3.42233]
    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
    [3.42614][3.42614:42639]()
    let n = hdr.n() + 1;
    [3.42614]
    [3.42685]
    let mut n = hdr.n();
  • edit in sanakirja-core/src/btree/page.rs at line 1162
    [3.42704]
    [2.25345]
    n += 1;
  • replacement in sanakirja-core/src/btree/page.rs at line 1165
    [3.42817][3.42817:42888]()
    let (split_key, split_value, mid_child, s1) = if u == k as usize {
    [3.42774]
    [3.42888]
    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
    [2.25473][3.43085:43112](),[3.43085][3.43085:43112]()
    (&*k, &*v, r, s1b)
    [2.25473]
    [3.43112]
    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
    [2.26872][2.26872:26912]()
    // Insertion in the middle.
    [2.26872]
    [2.26912]
    // 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
    [2.27318][2.27318:27404]()
    let mid = k as usize - u as usize;
    let (s0a, s0b) = s0.split_at(mid);
    [2.27318]
    [2.27404]
    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
    [2.27473][2.27473:27535]()
    alloc::<T, K, V, L>(&mut left, k0, v0, r, l, &mut n);
    [2.27473]
    [2.27535]
    alloc::<T, K, V, L>(&mut left, k0, v0, l, r, &mut n);
  • edit in sanakirja-core/src/btree/page.rs at line 1235
    [2.27656][2.27656:27657]()
  • replacement in sanakirja-core/src/btree/page.rs at line 1237
    [2.27755][2.27755:27820]()
    L::truncate_left::<T, K, V>(&mut right, k as usize);
    [2.27755]
    [2.27820]
    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
    [2.30332][2.30332:30617]()
    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,
    }))
    [2.30332]
    [3.50129]
    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
    [3.50204]
    [3.50204]
    #[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
    [2.32226][3.55972:56029](),[3.55972][3.55972:56029]()
    match P::merge_or_rebalance(txn, &mut concat)? {
    [2.32226]
    [3.56029]
    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
    [3.59685]
    [3.59685]
    debug!("single child {:?}", d);
  • edit in sanakirja-core/src/btree/del.rs at line 213
    [3.59732]
    [3.59732]
    debug!("modify {:?}", last_op);
  • file deletion: main.rs (-xw-x--x--)
    [3.71008][3.77812:77821](),[3.77821][3.77822:77822]()
    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 transaction
    let 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
    [3.79615]
    [3.79615]
    #[cfg(test)]
    mod tests;
    mod debug;
  • replacement in sanakirja/src/environment/muttxn.rs at line 149
    [3.85246][3.85246:85286]()
    let root = env.root.lock();
    [3.85246]
    [3.85286]
    let mut root = env.root.lock();
  • edit in sanakirja/src/environment/muttxn.rs at line 157
    [3.85733][3.85733:85777]()
    let mut root = env.root.lock();