From 9330a28d27a61cdd631a4e0500451c78a5415b0e Mon Sep 17 00:00:00 2001 From: OMGeeky Date: Sat, 4 May 2024 17:45:55 +0200 Subject: [PATCH] use BufWriter to potentially improve part-combine-speed --- src/twitch/parts_util.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/twitch/parts_util.rs b/src/twitch/parts_util.rs index 8c5726d..3be6551 100644 --- a/src/twitch/parts_util.rs +++ b/src/twitch/parts_util.rs @@ -1,4 +1,5 @@ use super::*; +use tokio::io::BufWriter; /// Sorts the parts by their number. /// @@ -43,21 +44,25 @@ pub fn sort_parts(files: &mut [PathBuf]) { pub async fn combine_parts_to_single_ts(files: &[PathBuf], target: &Path) -> Result<()> { debug!("combining all parts of video"); debug!("part amount: {}", files.len()); - let mut target = fs::File::create(target) + let target = fs::File::create(target) .await .map_err(DownloadFileError::FileCreation)?; + let mut target_buf = BufWriter::new(target); for file_path in files { trace!("{:?}", file_path.file_name()); let mut file = fs::File::open(&file_path) .await .map_err(DownloadFileError::Read)?; - tokio::io::copy(&mut file, &mut target) + + tokio::io::copy(&mut file, &mut target_buf) .await .map_err(DownloadFileError::Write)?; + tokio::fs::remove_file(&file_path) .await .map_err(DownloadFileError::Write)?; } + target_buf.flush().await.map_err(DownloadFileError::Write)?; Ok(()) }