summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-10-08 22:18:36 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-10-08 22:18:36 +0200
commite85f1ede2cbaff2ca73eec469111a434b4f166b5 (patch)
treecda8af32701fa2907436ebbaa088644a50499e6d
parent671e3fd3abbc5d6aec903c4a88ef0e037af6fe8a (diff)
downloadrebel-e85f1ede2cbaff2ca73eec469111a434b4f166b5.tar
rebel-e85f1ede2cbaff2ca73eec469111a434b4f166b5.zip
runc: use buffered writer for archive write
This should speed up both the actual file writing and the hashing.
-rw-r--r--src/runner/runc/run.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/runner/runc/run.rs b/src/runner/runc/run.rs
index f12e91f..76c8bc1 100644
--- a/src/runner/runc/run.rs
+++ b/src/runner/runc/run.rs
@@ -1,5 +1,6 @@
use std::{
collections::HashMap,
+ io::BufWriter,
path::{Path, PathBuf},
process,
};
@@ -166,8 +167,10 @@ fn collect_one_output(task: &runner::Task, path: &str) -> Result<Option<ArchiveH
let file = fs::create(&filename)?;
let hasher = ArchiveHasher::new();
let writer = TeeWriter::new(file, hasher);
+ let buffered_writer = BufWriter::with_capacity(16 * 1024 * 1024, writer);
- let writer = tar::pack(writer, &source, ["."])?;
+ let buffered_writer = tar::pack(buffered_writer, &source, ["."])?;
+ let writer = buffered_writer.into_inner()?;
let (file, hasher) = writer.into_inner();
file.sync_all()?;
drop(file);