Micro-improvements, now noticeably faster than std::collections::BTreeMap
[?]
Jan 30, 2021, 7:17 PM
FMN7X4J24EYPOJNBUWM4NKGWSJTRV2DHCIBMPV2AXLZVVAMNOBKQCDependencies
Change contents
- edit in sanakirja-core/src/btree/put.rs at line 13
use log::*; - edit in sanakirja-core/src/btree/put.rs at line 56
cursor.pointer -= 1; - edit in sanakirja-core/src/btree/put.rs at line 65
cursor.pointer -= 1; - replacement in sanakirja-core/src/btree/put.rs at line 66
if cursor.pointer == 0 {debug!("Split root: {:?} {:?}", left.0.offset, right.0.offset);if cursor.pointer > 0 {let cur = cursor.current();put = P::put(txn,cur.page,cursor.pointer < cursor.first_rc_level,cur.cursor.as_ref().unwrap(),split_key,split_value,left.0.offset,right.0.offset,)?} else { - edit in sanakirja-core/src/btree/put.rs at line 93
} else {debug!("put cascade");let cur = cursor.current();put = P::put(txn,cur.page,cursor.pointer < cursor.first_rc_level,cur.cursor.as_ref().unwrap(),split_key,split_value,left.0.offset,right.0.offset,)? - edit in sanakirja-core/src/btree/put.rs at line 95
Put::Ok(Ok { page, freed }) if cursor.pointer > 1 => {debug!("put update");cursor.pointer -= 1;incr_descendants::<T, K, V, P>(txn, cursor, free, freed)?;// updatelet ref curs = cursor.current();put = Put::Ok(P::update_left_child(txn,curs.page,cursor.pointer < cursor.first_rc_level,curs.cursor.as_ref().unwrap(),page.0.offset,)?)} - replacement in sanakirja-core/src/btree/put.rs at line 97
return Ok(page);if cursor.pointer > 0 {let ref curs = cursor.current();put = Put::Ok(P::update_left_child(txn,curs.page,cursor.pointer < cursor.first_rc_level,curs.cursor.as_ref().unwrap(),page.0.offset,)?)} else {return Ok(page);} - edit in sanakirja-core/src/btree/put.rs at line 125
// debug!("cursor.pointer {:?}, first_rc_level {:?}", cursor.pointer, cursor.first_rc_level); - edit in sanakirja-core/src/btree/page.rs at line 2
use log::*; - edit in sanakirja-core/src/btree/page.rs at line 112
debug!("leaf put"); - edit in sanakirja-core/src/btree/page.rs at line 114
debug!("internal put"); - edit in sanakirja-core/src/btree/page.rs at line 417
let hdr = &*header(&page); - replacement in sanakirja-core/src/btree/page.rs at line 425
s.binary_search_by(|tup| {if let Some(v0) = v0 {if let Some(v0) = v0 {s.binary_search_by(|tup| { - replacement in sanakirja-core/src/btree/page.rs at line 428
} else {})} else {s.binary_search_by(|tup| { - replacement in sanakirja-core/src/btree/page.rs at line 432
}})})} - replacement in sanakirja-core/src/btree/page.rs at line 439
s.binary_search_by(|&off| {let off = u16::from_le(off);let (k, v) = read::<T, K, V>(page.data.offset(off as isize));if let Some(v0) = v0 {if let Some(v0) = v0 {s.binary_search_by(|&off| {let off = u16::from_le(off);let (k, v) = read::<T, K, V>(page.data.offset(off as isize)); - replacement in sanakirja-core/src/btree/page.rs at line 444
} else {})} else {s.binary_search_by(|&off| {let off = u16::from_le(off);let (k, _) = read::<T, K, V>(page.data.offset(off as isize)); - replacement in sanakirja-core/src/btree/page.rs at line 450
}})})} - replacement in sanakirja-core/src/btree/page.rs at line 456
s.binary_search_by(|&off| {let off = u64::from_le(off) & 0xfff;let (k, v) = read::<T, K, V>(page.data.offset(off as isize & 0xfff));if let Some(v0) = v0 {if let Some(v0) = v0 {s.binary_search_by(|&off| {let off = u64::from_le(off) & 0xfff;let (k, v) = read::<T, K, V>(page.data.offset(off as isize & 0xfff)); - replacement in sanakirja-core/src/btree/page.rs at line 461
} else {})} else {s.binary_search_by(|&off| {let off = u64::from_le(off) & 0xfff;let (k, _) = read::<T, K, V>(page.data.offset(off as isize & 0xfff)); - replacement in sanakirja-core/src/btree/page.rs at line 467
}})})} - replacement in sanakirja-core/src/btree/page.rs at line 646
debug!("{:?} {:?} {:?}", new, hdr.n(), *n);// debug!("{:?} {:?} {:?}", new, hdr.n(), *n); - edit in sanakirja-core/src/btree/page.rs at line 1008
debug!("s = {:?}", s); - edit in sanakirja-core/src/btree/page.rs at line 1009
debug!("s0 = {:?} s1 = {:?}", s0, s1); - edit in sanakirja-core/src/btree/page.rs at line 1060
debug!("s1 = {:?}, kk = {:?}", s1, kk); - edit in sanakirja-core/src/btree/page.rs at line 1064
debug!("s1a = {:?} s1b = {:?}", s1a, s1b); - edit in sanakirja-core/src/btree/page.rs at line 1065
debug!("clone {:?} {:?}", n, s1a); - edit in sanakirja-core/src/btree/page.rs at line 1066
debug!("alloc {:?}", n); - edit in sanakirja-core/src/btree/page.rs at line 1067
debug!("clone 2 {:?}", n); - replacement in sanakirja-core/src/btree/cursor.rs at line 81
loop {let current = unsafe { &mut *self.stack[self.pointer].as_mut_ptr() };while self.pointer < N_CURSORS {let current = unsafe { &mut *self.stack.get_unchecked_mut(self.pointer).as_mut_ptr() }; - replacement in sanakirja-core/src/btree/cursor.rs at line 104
self.stack[self.pointer] = MaybeUninit::new(PageCursor {page: txn.load_page(next_page)?,cursor: None,});unsafe {*self.stack.get_unchecked_mut(self.pointer) = MaybeUninit::new(PageCursor {page: txn.load_page(next_page)?,cursor: None,});} - edit in sanakirja/src/main.rs at line 30
/* - replacement in sanakirja/src/main.rs at line 37
/* - replacement in sanakirja/Cargo.toml at line 12
log = { version = "*", features = [ "release_max_level_off" ] }log = { version = "*" }