Skip to content

Commit b1483dc

Browse files
committed
display memory useage statistics when creating delta
1 parent 7da2f85 commit b1483dc

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

client/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ command-rusage = "1.0.1"
3030
ruma-headers = {path = "../ruma-headers"}
3131
flate2 = { version = "*" }
3232
libalpm-rs = "*"
33+
memory-stats = { version = "*", optional = true }
3334

3435
[[bin]]
3536
name = "deltaclient"
3637

3738
[features]
3839
default = ["diff"]
39-
diff = []
40+
diff = ["dep:memory-stats"]

client/src/main.rs

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -482,17 +482,39 @@ impl<T, E> ResultSwap<T, E> for Result<T, E> {
482482

483483
#[cfg(feature = "diff")]
484484
fn gen_delta(orig: &Path, new: &Path, patch: &Path) -> Result<(), std::io::Error> {
485+
use std::io::Read;
486+
let baseline = memory_stats::memory_stats().unwrap().physical_mem;
487+
485488
let orig = OpenOptions::new().read(true).open(orig).unwrap();
486-
let mut orig = zstd::Decoder::new(orig)?;
489+
let mut origb = Vec::new();
490+
zstd::Decoder::new(orig)?.read_to_end(&mut origb)?;
491+
let mut origb = Cursor::new(origb);
492+
487493
let new = OpenOptions::new().read(true).open(new).unwrap();
488-
let mut new = zstd::Decoder::new(new)?;
494+
let mut newb = Vec::new();
495+
zstd::Decoder::new(new)?.read_to_end(&mut newb)?;
496+
let mut newb = Cursor::new(newb);
489497

490498
let patch = OpenOptions::new().write(true).create(true).open(patch).unwrap();
491499
let mut patch = zstd::Encoder::new(patch, 22)?;
492500

493-
ddelta::generate_chunked(&mut orig, &mut new, &mut patch, None, |p| debug!("{p:?}")).unwrap();
501+
let before = memory_stats::memory_stats().unwrap().physical_mem;
502+
let mut max = before;
503+
ddelta::generate_chunked(&mut origb, &mut newb, &mut patch, None, |p| {
504+
debug!("{p:?}");
505+
max = max.max(memory_stats::memory_stats().unwrap().physical_mem)
506+
})
507+
.unwrap();
494508
patch.do_finish()?;
495509

510+
let origb = origb.into_inner();
511+
let newb = newb.into_inner();
512+
513+
debug!("initial memory usage: {before}");
514+
debug!("maximum memory usage: {max}");
515+
debug!("origb: {}, newb: {}", origb.len(), newb.len());
516+
debug!("baseline: {baseline}");
517+
debug!("adduse: {}", max - origb.len() - newb.len() - baseline);
496518
Ok(())
497519
}
498520

0 commit comments

Comments
 (0)