Mercurial > lbo > hg > leveldb-rs
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));