From cc3a869ee4dcd38c33b9a40a3659172791189e39 Mon Sep 17 00:00:00 2001 From: leeeon233 Date: Tue, 3 Jan 2023 17:40:52 +0800 Subject: [PATCH] fix: update deps --- crates/loro-core/examples/encoding.rs | 15 ++++++++--- .../src/log_store/encoding/encode_updates.rs | 26 ++++--------------- 2 files changed, 16 insertions(+), 25 deletions(-) diff --git a/crates/loro-core/examples/encoding.rs b/crates/loro-core/examples/encoding.rs index 9b072223..9d1543a8 100644 --- a/crates/loro-core/examples/encoding.rs +++ b/crates/loro-core/examples/encoding.rs @@ -27,7 +27,7 @@ fn main() { None, )) .unwrap(); - let json1 = loro.to_json(); + let json_ori = loro.to_json(); println!( "encode changes {} bytes, used {}ms", @@ -46,7 +46,7 @@ fn main() { let mut loro = LoroCore::default(); let start = Instant::now(); loro.decode(&buf).unwrap(); - println!("decode changes used {}ms", start.elapsed().as_millis()); + println!("decode rle_updates used {}ms", start.elapsed().as_millis()); let buf2 = loro .encode(EncodeConfig::new( EncodeMode::RleUpdates(VersionVector::new()), @@ -55,7 +55,7 @@ fn main() { .unwrap(); assert_eq!(buf, buf2); let json2 = loro.to_json(); - assert_eq!(json1, json2); + assert_eq!(json_ori, json2); let start = Instant::now(); let mut loro2 = LoroCore::default(); @@ -64,15 +64,22 @@ fn main() { let json3 = loro2.to_json(); assert_eq!(json_snapshot, json3); + let start = Instant::now(); let update_buf = loro .encode(EncodeConfig::new( EncodeMode::Updates(VersionVector::new()), None, )) .unwrap(); - println!("Updates have {} bytes", update_buf.len()); + println!("encode updates {} bytes, used {}ms", update_buf.len(), start.elapsed().as_millis()); let mut encoder = GzEncoder::new(Vec::new(), flate2::Compression::default()); encoder.write_all(&update_buf).unwrap(); let data = encoder.finish().unwrap(); println!("After compress updates have {} bytes", data.len()); + let mut loro3 = LoroCore::default(); + let start = Instant::now(); + loro3.decode(&update_buf).unwrap(); + println!("decode updates used {}ms", start.elapsed().as_millis()); + let json_update = loro3.to_json(); + assert_eq!(json_ori, json_update); } diff --git a/crates/loro-core/src/log_store/encoding/encode_updates.rs b/crates/loro-core/src/log_store/encoding/encode_updates.rs index 3365e67d..a824906d 100644 --- a/crates/loro-core/src/log_store/encoding/encode_updates.rs +++ b/crates/loro-core/src/log_store/encoding/encode_updates.rs @@ -43,7 +43,7 @@ struct EncodedOp { #[derive(Serialize, Deserialize, Debug)] struct EncodedChange { pub(crate) ops: Vec, - pub(crate) deps_except_self: Vec, + pub(crate) deps: Vec, pub(crate) lamport_delta: u32, pub(crate) timestamp_delta: i64, } @@ -91,12 +91,7 @@ where contents: op.contents.iter().cloned().collect(), }) .collect(), - deps_except_self: first_change - .deps - .iter() - .filter(|x| x.client_id != this_client_id) - .copied() - .collect(), + deps: first_change.deps.iter().copied().collect(), lamport_delta: 0, timestamp_delta: 0, }); @@ -110,12 +105,7 @@ where contents: op.contents.iter().cloned().collect(), }) .collect(), - deps_except_self: change - .deps - .iter() - .filter(|x| x.client_id != this_client_id) - .copied() - .collect(), + deps: change.deps.iter().copied().collect(), lamport_delta: change.lamport - last_change.lamport, timestamp_delta: change.timestamp - last_change.timestamp, }); @@ -141,15 +131,9 @@ fn convert_encoded_to_changes(changes: EncodedClientChanges) -> Vec 0 { - deps.push(ID { - client_id: changes.meta.client, - counter: start_counter - 1, - }); - } + let mut deps = SmallVec::with_capacity(encoded.deps.len()); - for dep in encoded.deps_except_self { + for dep in encoded.deps { deps.push(dep); }