pijul nest
guest [sign in]

Micro-improvements, now noticeably faster than std::collections::BTreeMap

[?]
Jan 30, 2021, 7:17 PM
FMN7X4J24EYPOJNBUWM4NKGWSJTRV2DHCIBMPV2AXLZVVAMNOBKQC

Dependencies

Change contents

  • edit in sanakirja-core/src/btree/put.rs at line 13
    [2.3963][2.3963:3975]()
    use log::*;
  • edit in sanakirja-core/src/btree/put.rs at line 56
    [2.5216]
    [2.5216]
    cursor.pointer -= 1;
  • edit in sanakirja-core/src/btree/put.rs at line 65
    [2.5404][2.5404:5441]()
    cursor.pointer -= 1;
  • replacement in sanakirja-core/src/btree/put.rs at line 66
    [2.5516][2.5516:5641]()
    if cursor.pointer == 0 {
    debug!("Split root: {:?} {:?}", left.0.offset, right.0.offset);
    [2.5516]
    [2.5641]
    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
    [2.6136][2.6136:6641]()
    } 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
    [2.6673][2.6673:7253]()
    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)?;
    // update
    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,
    )?)
    }
  • replacement in sanakirja-core/src/btree/put.rs at line 97
    [2.7373][2.7373:7406]()
    return Ok(page);
    [2.7373]
    [2.7406]
    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
    [2.7700]
    [2.7700]
    // debug!("cursor.pointer {:?}, first_rc_level {:?}", cursor.pointer, cursor.first_rc_level);
  • edit in sanakirja-core/src/btree/page.rs at line 2
    [2.8638][2.8638:8650]()
    use log::*;
  • edit in sanakirja-core/src/btree/page.rs at line 112
    [2.11184][2.11184:11220]()
    debug!("leaf put");
  • edit in sanakirja-core/src/btree/page.rs at line 114
    [2.11319][2.11319:11359]()
    debug!("internal put");
  • edit in sanakirja-core/src/btree/page.rs at line 417
    [2.22499][2.22499:22538]()
    let hdr = &*header(&page);
  • replacement in sanakirja-core/src/btree/page.rs at line 425
    [2.22942][2.22942:23036]()
    s.binary_search_by(|tup| {
    if let Some(v0) = v0 {
    [2.22942]
    [2.23036]
    if let Some(v0) = v0 {
    s.binary_search_by(|tup| {
  • replacement in sanakirja-core/src/btree/page.rs at line 428
    [2.23130][2.23130:23163]()
    } else {
    [2.23130]
    [2.23163]
    })
    } else {
    s.binary_search_by(|tup| {
  • replacement in sanakirja-core/src/btree/page.rs at line 432
    [2.23225][2.23225:23274]()
    }
    })
    [2.23225]
    [2.23274]
    })
    }
  • replacement in sanakirja-core/src/btree/page.rs at line 439
    [2.23479][2.23479:23713]()
    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 {
    [2.23479]
    [2.23713]
    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
    [2.23807][2.23807:23840]()
    } else {
    [2.23807]
    [2.23840]
    })
    } 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
    [2.23902][2.23902:23951]()
    }
    })
    [2.23902]
    [2.23951]
    })
    }
  • replacement in sanakirja-core/src/btree/page.rs at line 456
    [2.24115][2.24115:24349]()
    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 {
    [2.24115]
    [2.24349]
    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
    [2.24439][2.24439:24468]()
    } else {
    [2.24439]
    [2.24468]
    })
    } 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
    [2.24526][2.24526:24567]()
    }
    })
    [2.24526]
    [2.24567]
    })
    }
  • replacement in sanakirja-core/src/btree/page.rs at line 646
    [2.30404][2.30404:30460]()
    debug!("{:?} {:?} {:?}", new, hdr.n(), *n);
    [2.30404]
    [2.30460]
    // debug!("{:?} {:?} {:?}", new, hdr.n(), *n);
  • edit in sanakirja-core/src/btree/page.rs at line 1008
    [2.42704][2.42704:42731]()
    debug!("s = {:?}", s);
  • edit in sanakirja-core/src/btree/page.rs at line 1009
    [2.42774][2.42774:42817]()
    debug!("s0 = {:?} s1 = {:?}", s0, s1);
  • edit in sanakirja-core/src/btree/page.rs at line 1060
    [2.44826][2.44826:44874]()
    debug!("s1 = {:?}, kk = {:?}", s1, kk);
  • edit in sanakirja-core/src/btree/page.rs at line 1064
    [2.44956][2.44956:45003]()
    debug!("s1a = {:?} s1b = {:?}", s1a, s1b);
  • edit in sanakirja-core/src/btree/page.rs at line 1065
    [2.45049][2.45049:45088]()
    debug!("clone {:?} {:?}", n, s1a);
  • edit in sanakirja-core/src/btree/page.rs at line 1066
    [2.45144][2.45144:45173]()
    debug!("alloc {:?}", n);
  • edit in sanakirja-core/src/btree/page.rs at line 1067
    [2.45232][2.45232:45263]()
    debug!("clone 2 {:?}", n);
  • replacement in sanakirja-core/src/btree/cursor.rs at line 81
    [2.66237][2.66237:66334]()
    loop {
    let current = unsafe { &mut *self.stack[self.pointer].as_mut_ptr() };
    [2.66237]
    [2.66334]
    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
    [2.67229][2.67229:67409]()
    self.stack[self.pointer] = MaybeUninit::new(PageCursor {
    page: txn.load_page(next_page)?,
    cursor: None,
    });
    [2.67229]
    [2.67409]
    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
    [2.78605][2.78605:78616]()
    /*
  • replacement in sanakirja/src/main.rs at line 37
    [2.78876][2.78876:78878]()
    [2.78876]
    [2.78878]
    /*
  • replacement in sanakirja/Cargo.toml at line 12
    [2.108664][2.108664:108728]()
    log = { version = "*", features = [ "release_max_level_off" ] }
    [2.108664]
    [2.108728]
    log = { version = "*" }