mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-07-25 09:48:10 -07:00
comp + vec: tiny opti
This commit is contained in:
@@ -10,11 +10,10 @@ use std::{
|
|||||||
use brk_core::CheckedSub;
|
use brk_core::CheckedSub;
|
||||||
use brk_exit::Exit;
|
use brk_exit::Exit;
|
||||||
use brk_vec::{
|
use brk_vec::{
|
||||||
AnyStorableVec, Compressed, Error, Result, StorableVec, StoredIndex, StoredType, Version,
|
AnyStorableVec, Compressed, Error, MAX_CACHE_SIZE, Result, StorableVec, StoredIndex,
|
||||||
|
StoredType, Version,
|
||||||
};
|
};
|
||||||
|
|
||||||
const FLUSH_EVERY: usize = 10_000;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ComputedVec<I, T> {
|
pub struct ComputedVec<I, T> {
|
||||||
computed_version: Option<Version>,
|
computed_version: Option<Version>,
|
||||||
@@ -26,6 +25,8 @@ where
|
|||||||
I: StoredIndex,
|
I: StoredIndex,
|
||||||
T: StoredType,
|
T: StoredType,
|
||||||
{
|
{
|
||||||
|
const SIZE_OF: usize = size_of::<T>();
|
||||||
|
|
||||||
pub fn forced_import(
|
pub fn forced_import(
|
||||||
path: &Path,
|
path: &Path,
|
||||||
version: Version,
|
version: Version,
|
||||||
@@ -63,7 +64,7 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.vec.pushed_len() >= FLUSH_EVERY {
|
if self.vec.pushed_len() * Self::SIZE_OF >= MAX_CACHE_SIZE {
|
||||||
Ok(self.safe_flush(exit)?)
|
Ok(self.safe_flush(exit)?)
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -427,7 +427,9 @@ where
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.mut_file().write_all(&bytes)?;
|
let file = self.mut_file();
|
||||||
|
file.write_all(&bytes)?;
|
||||||
|
file.sync_all()?;
|
||||||
|
|
||||||
self.reset_caches();
|
self.reset_caches();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user