From 121722729caaacbbd430b0a58c302389575acd05 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 19 Apr 2025 14:40:20 +0200 Subject: buffered io sync memory cache --- base/src/cache.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/base/src/cache.rs b/base/src/cache.rs index 40c6e7b..9c12d3d 100644 --- a/base/src/cache.rs +++ b/base/src/cache.rs @@ -17,7 +17,7 @@ use std::{ fs::rename, future::Future, hash::{Hash, Hasher}, - io::Seek, + io::{Seek, Write}, path::PathBuf, sync::{ atomic::{AtomicBool, AtomicUsize, Ordering}, @@ -178,13 +178,15 @@ where } } - let location = cache_file(kind, &key, move |mut file| { + let location = cache_file(kind, &key, move |file| { let object = generate()?; + let mut file = std::io::BufWriter::new(file); bincode::encode_into_std_write(&object, &mut file, bincode::config::standard()) .context("encoding cache object")?; + file.flush()?; Ok(()) })?; - let mut file = std::fs::File::open(location.abs())?; + let mut file = std::io::BufReader::new(std::fs::File::open(location.abs())?); let object = bincode::decode_from_std_read::(&mut file, bincode::config::standard()) .context("decoding cache object")?; let object = Arc::new(object); -- cgit v1.2.3-70-g09d2