perf: snapshot OplogEncoded use iter

This commit is contained in:
leeeon233 2023-09-08 09:17:26 +08:00
parent a1c3eea4f1
commit 8611509492
2 changed files with 12 additions and 5 deletions

View file

@ -74,14 +74,14 @@ pub fn decode_oplog(
let mut keys = state_arena.keywords;
keys.append(&mut extra_arena.keywords);
let oplog_data = OplogEncoded::decode(data)?;
let oplog_data = OplogEncoded::decode_iter(data)?;
let mut changes = Vec::new();
let mut dep_iter = oplog_data.deps.iter();
let mut op_iter = oplog_data.ops.iter();
let mut dep_iter = oplog_data.deps;
let mut op_iter = oplog_data.ops;
let mut counters = FxHashMap::default();
let mut text_idx = 0;
for change in oplog_data.changes.iter() {
for change in oplog_data.changes {
let peer_idx = change.peer_idx as usize;
let peer_id = common.peer_ids[peer_idx];
let timestamp = change.timestamp;
@ -284,6 +284,13 @@ impl OplogEncoded {
.map_err(|e| LoroError::DecodeError(e.to_string().into_boxed_str()))
}
fn decode_iter<'f: 'iter, 'iter>(
data: &'f FinalPhase,
) -> Result<<Self as TableIter<'iter>>::Iter, LoroError> {
serde_columnar::iter_from_bytes::<Self>(&data.oplog)
.map_err(|e| LoroError::DecodeError(e.to_string().into_boxed_str()))
}
fn encode(&self) -> Vec<u8> {
to_vec(self).unwrap()
}

View file

@ -84,7 +84,7 @@ impl<'a> FinalPhase<'a> {
}
}
#[columnar(ser, de)]
// #[columnar(ser, de)]
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct CommonArena<'a> {
#[serde(borrow)]