changeset 387:2ac6eedcc9dc

db_impl: Use a BufWriter inside LogWriter Unbuffered write-a-lot with 32768 entries written, first four iterations on a new DB: usr=0.32 sys=0.12 elap=0.46 usr=0.47 sys=0.12 elap=0.60 usr=0.59 sys=0.11 elap=0.72 usr=0.50 sys=0.15 elap=0.67 Buffered write-a-lot with 32768 entries written, first four iterations on a new DB: usr=0.22 sys=0.01 elap=0.24 (delta = -0.1/-0.11/-0.22) usr=0.43 sys=0.03 elap=0.48 (delta = -0.04/-0.09/-0.12) usr=0.54 sys=0.05 elap=0.62 (delta = -0.05/-0.06/-0.1) usr=0.42 sys=0.03 elap=0.47 (delta = (-0.08/-0.12/-0.2)
author Lewin Bormann <lbo@spheniscida.de>
date Mon, 09 Oct 2017 05:51:43 +0000
parents cac919a0a15f
children f2127a3fb303
files examples/write-a-lot/src/main.rs src/db_impl.rs
diffstat 2 files changed, 8 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/examples/write-a-lot/src/main.rs	Sun Oct 08 19:27:59 2017 +0200
+++ b/examples/write-a-lot/src/main.rs	Mon Oct 09 05:51:43 2017 +0000
@@ -32,5 +32,5 @@
     let opt = Options::default();
     let mut db = DB::open("test1", opt).unwrap();
 
-    fill_db(&mut db, 16384).unwrap();
+    fill_db(&mut db, 32768).unwrap();
 }
--- a/src/db_impl.rs	Sun Oct 08 19:27:59 2017 +0200
+++ b/src/db_impl.rs	Mon Oct 09 05:51:43 2017 +0000
@@ -26,7 +26,7 @@
 use write_batch::WriteBatch;
 
 use std::cmp::Ordering;
-use std::io::{self, Write};
+use std::io::{self, BufWriter, Write};
 use std::mem;
 use std::ops::{DerefMut, Drop};
 use std::path::Path;
@@ -45,7 +45,7 @@
     mem: MemTable,
     imm: Option<MemTable>,
 
-    log: Option<LogWriter<Box<Write>>>,
+    log: Option<LogWriter<BufWriter<Box<Write>>>>,
     log_num: Option<FileNum>,
     cache: Shared<TableCache>,
     vset: Shared<VersionSet>,
@@ -106,7 +106,7 @@
             let logfile =
                 db.opt.env.open_writable_file(Path::new(&log_file_name(&db.name, lognum)))?;
             ve.set_log_num(lognum);
-            db.log = Some(LogWriter::new(logfile));
+            db.log = Some(LogWriter::new(BufWriter::new(logfile)));
             db.log_num = Some(lognum);
         }
 
@@ -257,7 +257,7 @@
             log!(self.opt.log, "reusing log file {}", filename);
             let oldsize = self.opt.env.size_of(Path::new(&filename))?;
             let oldfile = self.opt.env.open_appendable_file(Path::new(&filename))?;
-            let lw = LogWriter::new_with_off(oldfile, oldsize);
+            let lw = LogWriter::new_with_off(BufWriter::new(oldfile), oldsize);
             self.log = Some(lw);
             self.log_num = Some(log_num);
             self.mem = mem;
@@ -523,7 +523,7 @@
                 self.vset.borrow_mut().reuse_file_number(logn);
                 Err(logf.err().unwrap())
             } else {
-                self.log = Some(LogWriter::new(logf.unwrap()));
+                self.log = Some(LogWriter::new(BufWriter::new(logf.unwrap())));
                 self.log_num = Some(logn);
 
                 let mut imm = MemTable::new(self.opt.cmp.clone());
@@ -739,7 +739,7 @@
 
                 let fname = table_file_name(&self.name, fnum);
                 let f = self.opt.env.open_writable_file(Path::new(&fname))?;
-                let f = Box::new(io::BufWriter::new(f));
+                let f = Box::new(BufWriter::new(f));
                 cs.builder = Some(TableBuilder::new(self.opt.clone(), f));
                 cs.outputs.push(fmd);
             }
@@ -897,7 +897,7 @@
     // TODO: Replace with catch {} when available.
     let r = (|| -> Result<()> {
         let f = opt.env.open_writable_file(Path::new(&filename))?;
-        let f = io::BufWriter::new(f);
+        let f = BufWriter::new(f);
         let mut builder = TableBuilder::new(opt.clone(), f);
         while from.advance() {
             assert!(from.current(&mut kbuf, &mut vbuf));