diff --git a/src/disk/cache.rs b/src/disk/cache.rs
index 171aef3269060045ec4e8fee740c192484009275..9a429a7f0aa2dc691fd6878b754c456067297702 100644
--- a/src/disk/cache.rs
+++ b/src/disk/cache.rs
@@ -20,11 +20,13 @@ pub struct DiskCache<T> {
 
 impl<T: Disk> DiskCache<T> {
     pub fn new(inner: T) -> Self {
+        // 8 MB cache
+        let size = 8 * 1024 * 1024 / BLOCK_SIZE as usize;
         DiskCache {
             inner,
-            cache: HashMap::new(),
-            order: VecDeque::new(),
-            size: 16 * 1024 * 1024 / BLOCK_SIZE as usize, // 16 MB cache
+            cache: HashMap::with_capacity(size),
+            order: VecDeque::with_capacity(size),
+            size,
         }
     }