pijul nest
guest [sign in]

Using the same definition of the "occupied" field uniform everywhere

[?]
Feb 5, 2021, 7:08 PM
7WJNSPEWJSJROOYHU6QROWPUZ6WNIOUG2BPSOPDPCK6RG2NQU6OQC

Dependencies

  • [2] KX3WVNZW Testing/debugging "rebalance causes split of the root"
  • [3] APPY2E7M Unsized deletions + custom sizes back
  • [4] OP6SVMOD Resetting history
  • [5] X3QVVQIS More debugging (del seems to work now)
  • [6] DV4A2LR7 Double-inserts (rebalancing near an internal deletion)
  • [7] QEUTVAZ4 Splitting btree::page
  • [8] WS4ZQM4R Debugging, tests, etc.
  • [9] H3FVSQIQ Unsized pages
  • [10] AOX2XQIS Actually, with the correct functions, Unsized pages are always slower than Sized pages (especially for writing)
  • [11] OTWDDJE7 Trait/type cleanup

Change contents

  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 56
    [3.3112][3.3112:3170]()
    occupied += crate::alloc_size(k, v) as usize;
    [3.3112]
    [3.3170]
    occupied += 8 + crate::alloc_size(k, v) as usize;
  • replacement in sanakirja-core/src/btree/page_unsized.rs at line 58
    [3.3213][3.3213:3275]()
    occupied += crate::alloc_size(k, v) as usize;
    [3.3213]
    [3.3275]
    occupied += 8 + crate::alloc_size(k, v) as usize;
  • edit in sanakirja-core/src/btree/page_unsized.rs at line 60
    [3.3289][3.244:278](),[3.278][3.3511:3607](),[3.3511][3.3511:3607]()
    if m.ins2.is_some() {
    occupied += 16
    } else {
    occupied += 8
    }
  • edit in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 51
    [3.24242][2.441:520]()
    let hdrl = header(new_left.0.as_page());
    debug!("mid = {:?}", m.mid);
  • replacement in sanakirja-core/src/btree/page.rs at line 58
    [3.1407][3.1548:1577](),[3.10157][3.1548:1577]()
    let mut occupied = {
    [3.1407]
    [3.1577]
    let mut total = {
  • replacement in sanakirja-core/src/btree/page.rs at line 64
    [3.10400][3.10400:10452]()
    occupied += (HDR + al - 1) & (!al - 1);
    [3.10400]
    [3.10452]
    total += (HDR + al - 1) & (!al - 1);
  • replacement in sanakirja-core/src/btree/page.rs at line 66
    [3.10469][3.10469:10497]()
    occupied += HDR
    [3.10469]
    [3.10497]
    total += HDR
  • edit in sanakirja-core/src/btree/page.rs at line 68
    [3.10508][3.1626:1740]()
    if m.skip_first {
    occupied -= Self::current_size(m.page.as_page(), &m.c1) as usize;
    }
  • replacement in sanakirja-core/src/btree/page.rs at line 69
    [3.117][3.1741:1799](),[3.10614][3.1741:1799]()
    occupied += crate::alloc_size(k, v) as usize;
    [3.117]
    [3.492]
    let extra = if m.c1.is_leaf { 8 } else { 0 };
    total += extra + crate::alloc_size(k, v) as usize;
  • replacement in sanakirja-core/src/btree/page.rs at line 72
    [3.535][3.535:611](),[3.611][3.44444:44475](),[3.44475][3.1227:1351](),[3.1351][3.44475:44607](),[3.44475][3.44475:44607](),[3.783][3.10806:10824](),[3.44607][3.10806:10824](),[3.10806][3.10806:10824]()
    occupied += crate::alloc_size(k, v) as usize;
    }
    if !m.c1.is_leaf {
    // If m is an internal node, there is an extra cost,
    // which doesn't exist if m is a leaf.
    if m.ins2.is_some() {
    occupied += 16
    } else {
    occupied += 8
    }
    [3.535]
    [3.10875]
    total += extra + crate::alloc_size(k, v) as usize;
  • replacement in sanakirja-core/src/btree/page.rs at line 75
    [3.10899][3.10899:10916]()
    occupied
    [3.10899]
    [3.10916]
    if m.skip_first {
    total -= Self::current_size(m.page.as_page(), &m.c1) as usize;
    }
    total
  • replacement in sanakirja-core/src/btree/page.rs at line 257
    [3.3405][3.3405:3485]()
    if mod_size >= PAGE_SIZE / 2 || occupied - first_size < PAGE_SIZE / 2 {
    [3.3405]
    [3.3485]
    if mod_size >= PAGE_SIZE / 2 || hdr_size + occupied - first_size < PAGE_SIZE / 2 {
  • edit in sanakirja-core/src/btree/page/rebalance.rs at line 50
    [3.1736][3.1736:1795]()
    let mut n = header(new_left.0.as_page()).n() as isize;