Using the same definition of the "occupied" field uniform everywhere
[?]
Feb 5, 2021, 7:08 PM
7WJNSPEWJSJROOYHU6QROWPUZ6WNIOUG2BPSOPDPCK6RG2NQU6OQCDependencies
- [2]
KX3WVNZWTesting/debugging "rebalance causes split of the root" - [3]
APPY2E7MUnsized deletions + custom sizes back - [4]
OP6SVMODResetting history - [5]
X3QVVQISMore debugging (del seems to work now) - [6]
DV4A2LR7Double-inserts (rebalancing near an internal deletion) - [7]
QEUTVAZ4Splitting btree::page - [8]
WS4ZQM4RDebugging, tests, etc. - [9]
H3FVSQIQUnsized pages - [10]
AOX2XQISActually, with the correct functions, Unsized pages are always slower than Sized pages (especially for writing) - [11]
OTWDDJE7Trait/type cleanup
Change contents
- replacement in sanakirja-core/src/btree/page_unsized.rs at line 56
occupied += crate::alloc_size(k, v) as usize;occupied += 8 + crate::alloc_size(k, v) as usize; - replacement in sanakirja-core/src/btree/page_unsized.rs at line 58
occupied += crate::alloc_size(k, v) as usize;occupied += 8 + crate::alloc_size(k, v) as usize; - edit in sanakirja-core/src/btree/page_unsized.rs at line 60
if m.ins2.is_some() {occupied += 16} else {occupied += 8} - edit in sanakirja-core/src/btree/page_unsized/rebalance.rs at line 51
let hdrl = header(new_left.0.as_page());debug!("mid = {:?}", m.mid); - replacement in sanakirja-core/src/btree/page.rs at line 58
let mut occupied = {let mut total = { - replacement in sanakirja-core/src/btree/page.rs at line 64
occupied += (HDR + al - 1) & (!al - 1);total += (HDR + al - 1) & (!al - 1); - replacement in sanakirja-core/src/btree/page.rs at line 66
occupied += HDRtotal += HDR - edit in sanakirja-core/src/btree/page.rs at line 68
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
occupied += crate::alloc_size(k, v) as usize;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}total += extra + crate::alloc_size(k, v) as usize; - replacement in sanakirja-core/src/btree/page.rs at line 75
occupiedif 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
if mod_size >= PAGE_SIZE / 2 || occupied - first_size < PAGE_SIZE / 2 {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
let mut n = header(new_left.0.as_page()).n() as isize;