From 7a5853e3e7c3c79ee9179170a069b39968c62db0 Mon Sep 17 00:00:00 2001 From: Hoyt Koepke Date: Wed, 5 Feb 2025 10:56:50 -1000 Subject: [PATCH] Wrap cache reader in BufReader for speed. --- chunk_cache/src/disk.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/chunk_cache/src/disk.rs b/chunk_cache/src/disk.rs index fe6ab82..d0000a9 100644 --- a/chunk_cache/src/disk.rs +++ b/chunk_cache/src/disk.rs @@ -241,7 +241,7 @@ impl DiskCache { let path = self.item_path(key, &cache_item)?; - let mut file_buf = match File::open(&path) { + let file_buf = match File::open(&path) { Ok(file) => file, Err(e) => match e.kind() { ErrorKind::NotFound => { @@ -255,8 +255,9 @@ impl DiskCache { // TODO: reintroduce checksum validation of cache file, but not for every get, memoize success status per // cache item - file_buf.seek(SeekFrom::Start(0))?; - let Ok(header) = CacheFileHeader::deserialize(&mut file_buf) + let mut file_reader = std::io::BufReader::new(file_buf); + + let Ok(header) = CacheFileHeader::deserialize(&mut file_reader) .debug_error(format!("failed to deserialize cache file header on path: {path:?}")) else { self.remove_item(key, &cache_item)?; @@ -264,7 +265,7 @@ impl DiskCache { }; let start = cache_item.range.start; - let result_buf = get_range_from_cache_file(&header, &mut file_buf, range, start)?; + let result_buf = get_range_from_cache_file(&header, &mut file_reader, range, start)?; return Ok(Some(result_buf)); } }