diff --git a/benches/block.rs b/benches/block.rs index 6810ac5..88a22c6 100644 --- a/benches/block.rs +++ b/benches/block.rs @@ -99,8 +99,8 @@ fn value_block_find(c: &mut Criterion) { } } -fn load_value_block_from_disk(c: &mut Criterion) { - let mut group = c.benchmark_group("Load block from disk"); +fn encode_block(c: &mut Criterion) { + let mut group = c.benchmark_group("Encode block"); for comp_type in [ CompressionType::None, @@ -131,9 +131,51 @@ fn load_value_block_from_disk(c: &mut Criterion) { } } + group.bench_function(format!("{block_size} KiB [{comp_type}]"), |b| { + b.iter(|| { + // Serialize block + let (mut header, data) = + ValueBlock::to_bytes_compressed(&items, 0, comp_type).unwrap(); + }); + }); + } + } +} + +fn load_value_block_from_disk(c: &mut Criterion) { + let mut group = c.benchmark_group("Load block from disk"); + + for comp_type in [ + //CompressionType::None, + CompressionType::Lz4, + //CompressionType::Miniz(3), + ] { + for block_size in [1, 4, 8, 16, 32, 64, 128] { + let block_size = block_size * 1_024; + + let mut size = 0; + + let mut items = vec![]; + + for x in 0u64.. { + let value = InternalValue::from_components( + x.to_be_bytes(), + x.to_string().repeat(50).as_bytes(), + 63, + lsm_tree::ValueType::Value, + ); + + size += value.size(); + + items.push(value); + + if size >= block_size { + break; + } + } + // Serialize block let (mut header, data) = ValueBlock::to_bytes_compressed(&items, 0, comp_type).unwrap(); - header.checksum = Checksum::from_bytes(&data); let mut file = tempfile::tempfile().unwrap(); header.encode_into(&mut file).unwrap(); @@ -156,5 +198,10 @@ fn load_value_block_from_disk(c: &mut Criterion) { } } -criterion_group!(benches, value_block_find, load_value_block_from_disk); +criterion_group!( + benches, + encode_block, + value_block_find, + load_value_block_from_disk, +); criterion_main!(benches);