ref bench
This commit is contained in:
		@@ -7,12 +7,12 @@ extern crate serde_json;
 | 
			
		||||
extern crate tempfile;
 | 
			
		||||
 | 
			
		||||
use chgk_ledb_lib::db;
 | 
			
		||||
use std::path::PathBuf;
 | 
			
		||||
use std::path::Path;
 | 
			
		||||
 | 
			
		||||
use db::{Reader, Writer, WriterOpts};
 | 
			
		||||
 | 
			
		||||
use criterion::{BatchSize, Criterion};
 | 
			
		||||
use tempfile::tempdir;
 | 
			
		||||
use tempfile::{tempdir, NamedTempFile};
 | 
			
		||||
 | 
			
		||||
use serde_derive::{Deserialize, Serialize};
 | 
			
		||||
 | 
			
		||||
@@ -37,17 +37,14 @@ struct TestData {
 | 
			
		||||
const N: usize = 4096;
 | 
			
		||||
 | 
			
		||||
fn gen_data(count: usize) -> impl Iterator<Item = TestData> {
 | 
			
		||||
    (0..count)
 | 
			
		||||
        .into_iter()
 | 
			
		||||
        .map(|i| 143 + i as u64)
 | 
			
		||||
        .map(|i| TestData {
 | 
			
		||||
            num1: i,
 | 
			
		||||
            num2: i * 100 ^ 0xDF0E441122334455,
 | 
			
		||||
            test: "test ---- Test ____".repeat(123 + i as usize % 15),
 | 
			
		||||
        })
 | 
			
		||||
    (0..count).map(|i| 143 + i as u64).map(|i| TestData {
 | 
			
		||||
        num1: i,
 | 
			
		||||
        num2: (i * 100) ^ 0xDF0E441122334455,
 | 
			
		||||
        test: "test ---- Test ____".repeat(123 + i as usize % 15),
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn prepare_db_writer(path: &PathBuf) -> Writer<TestData> {
 | 
			
		||||
fn prepare_db_writer<P: AsRef<Path>>(path: P) -> Writer<TestData> {
 | 
			
		||||
    let opts = WriterOpts {
 | 
			
		||||
        compress_lvl: 1,
 | 
			
		||||
        data_buf_size: 100 * 1024 * 1024,
 | 
			
		||||
@@ -60,7 +57,9 @@ fn prepare_db_writer(path: &PathBuf) -> Writer<TestData> {
 | 
			
		||||
 | 
			
		||||
fn db_read(c: &mut Criterion) {
 | 
			
		||||
    let dir = tempdir().expect("tempdir");
 | 
			
		||||
    let tmpfile = dir.path().join("test.tmp");
 | 
			
		||||
    let tmpfile = NamedTempFile::new_in(dir.path())
 | 
			
		||||
        .expect("new tempfile")
 | 
			
		||||
        .into_temp_path();
 | 
			
		||||
    let mut writer = prepare_db_writer(&tmpfile);
 | 
			
		||||
 | 
			
		||||
    let mut items_iter = gen_data(N).collect::<Vec<TestData>>().into_iter();
 | 
			
		||||
@@ -85,10 +84,13 @@ fn db_read(c: &mut Criterion) {
 | 
			
		||||
 | 
			
		||||
fn db_write(c: &mut Criterion) {
 | 
			
		||||
    let dir = tempdir().expect("tempdir");
 | 
			
		||||
    let tmpfile = dir.path().join("test.tmp");
 | 
			
		||||
 | 
			
		||||
    c.bench_function("write", |b| {
 | 
			
		||||
        b.iter_batched(
 | 
			
		||||
            || {
 | 
			
		||||
                let tmpfile = NamedTempFile::new_in(dir.path())
 | 
			
		||||
                    .expect("new tempfile")
 | 
			
		||||
                    .into_temp_path();
 | 
			
		||||
                let src = gen_data(N).collect::<Vec<TestData>>().into_iter();
 | 
			
		||||
                let writer = prepare_db_writer(&tmpfile);
 | 
			
		||||
                (src, writer)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user