diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-10-08 22:18:36 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-10-08 22:18:36 +0200 |
commit | e85f1ede2cbaff2ca73eec469111a434b4f166b5 (patch) | |
tree | cda8af32701fa2907436ebbaa088644a50499e6d | |
parent | 671e3fd3abbc5d6aec903c4a88ef0e037af6fe8a (diff) | |
download | rebel-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.rs | 5 |
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); |