mirror of
https://github.com/loro-dev/loro.git
synced 2025-02-02 11:06:14 +00:00
perf: snapshot OplogEncoded use iter
This commit is contained in:
parent
a1c3eea4f1
commit
8611509492
2 changed files with 12 additions and 5 deletions
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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)]
|
||||
|
|
Loading…
Reference in a new issue