mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-06-30 06:02:10 -07:00
comp + vec: snapshot before bug hunting
This commit is contained in:
@@ -125,7 +125,7 @@ pub struct RunConfig {
|
||||
mode: Option<Mode>,
|
||||
|
||||
/// Computation mode for compatible datasets, `lazy` computes data whenever requested without saving it, `eager` computes the data once and saves it to disk, default: Lazy, saved
|
||||
#[arg(short, long)]
|
||||
#[arg(short = 'C', long)]
|
||||
computation: Option<Computation>,
|
||||
|
||||
/// Activate compression of datasets, set to true to save disk space or false if prioritize speed, default: true, saved
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -35,7 +35,7 @@ impl Vecs {
|
||||
|
||||
Ok(Self {
|
||||
// blocks: blocks::Vecs::forced_import(path, computation, compressed)?,
|
||||
indexes: indexes::Vecs::forced_import(path, computation, compressed)?,
|
||||
indexes: indexes::Vecs::forced_import(path, indexer, computation, compressed)?,
|
||||
// mining: mining::Vecs::forced_import(path, computation, compressed)?,
|
||||
// transactions: transactions::Vecs::forced_import(
|
||||
// path,
|
||||
|
||||
@@ -23,7 +23,7 @@ color-eyre = { workspace = true }
|
||||
jiff = { workspace = true }
|
||||
log = { workspace = true }
|
||||
minreq = { workspace = true }
|
||||
oxc = { version = "0.67.0", features = ["codegen", "minifier"] }
|
||||
oxc = { version = "0.68.1", features = ["codegen", "minifier"] }
|
||||
serde = { workspace = true }
|
||||
tokio = { version = "1.44.2", features = ["full"] }
|
||||
tower-http = { version = "0.6.2", features = ["compression-full", "trace"] }
|
||||
|
||||
@@ -4,7 +4,7 @@ use std::{fs, path::Path};
|
||||
|
||||
use oxc::{
|
||||
allocator::Allocator,
|
||||
codegen::{CodeGenerator, CodegenOptions, LegalComment},
|
||||
codegen::{Codegen, CodegenOptions, LegalComment},
|
||||
minifier::{CompressOptions, MangleOptions, Minifier, MinifierOptions},
|
||||
parser::Parser,
|
||||
span::SourceType,
|
||||
@@ -26,7 +26,7 @@ pub fn minify_js(path: &Path) -> String {
|
||||
})
|
||||
.build(&allocator, &mut program);
|
||||
|
||||
CodeGenerator::new()
|
||||
Codegen::new()
|
||||
.with_options(CodegenOptions {
|
||||
minify: true,
|
||||
single_quote: false,
|
||||
|
||||
@@ -36,11 +36,11 @@ impl Computation {
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub enum Dependencies<T, S1I, S1T, S2I, S2T, S3I, S3T> {
|
||||
From1(BoxedAnyIterableVec<S1I, S1T>, ComputeFrom1<T, S1I, S1T>),
|
||||
pub enum Dependencies<I, T, S1I, S1T, S2I, S2T, S3I, S3T> {
|
||||
From1(BoxedAnyIterableVec<S1I, S1T>, ComputeFrom1<I, T, S1I, S1T>),
|
||||
From2(
|
||||
(BoxedAnyIterableVec<S1I, S1T>, BoxedAnyIterableVec<S2I, S2T>),
|
||||
ComputeFrom2<T, S1I, S1T, S2I, S2T>,
|
||||
ComputeFrom2<I, T, S1I, S1T, S2I, S2T>,
|
||||
),
|
||||
From3(
|
||||
(
|
||||
@@ -48,7 +48,7 @@ pub enum Dependencies<T, S1I, S1T, S2I, S2T, S3I, S3T> {
|
||||
BoxedAnyIterableVec<S2I, S2T>,
|
||||
BoxedAnyIterableVec<S3I, S3T>,
|
||||
),
|
||||
ComputeFrom3<T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
ComputeFrom3<I, T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
),
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ pub type ComputedVecFrom3<I, T, S1I, S1T, S2I, S2T, S3I, S3T> =
|
||||
pub enum ComputedVec<I, T, S1I, S1T, S2I, S2T, S3I, S3T> {
|
||||
Eager {
|
||||
vec: EagerVec<I, T>,
|
||||
deps: Dependencies<T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
deps: Dependencies<I, T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
},
|
||||
LazyFrom1(LazyVecFrom1<I, T, S1I, S1T>),
|
||||
LazyFrom2(LazyVecFrom2<I, T, S1I, S1T, S2I, S2T>),
|
||||
@@ -88,7 +88,7 @@ where
|
||||
version: Version,
|
||||
compressed: Compressed,
|
||||
source: BoxedAnyIterableVec<S1I, S1T>,
|
||||
compute: ComputeFrom1<T, S1I, S1T>,
|
||||
compute: ComputeFrom1<I, T, S1I, S1T>,
|
||||
) -> Result<Self> {
|
||||
Ok(match mode {
|
||||
Computation::Eager => Self::Eager {
|
||||
@@ -110,7 +110,7 @@ where
|
||||
compressed: Compressed,
|
||||
source1: BoxedAnyIterableVec<S1I, S1T>,
|
||||
source2: BoxedAnyIterableVec<S2I, S2T>,
|
||||
compute: ComputeFrom2<T, S1I, S1T, S2I, S2T>,
|
||||
compute: ComputeFrom2<I, T, S1I, S1T, S2I, S2T>,
|
||||
) -> Result<Self> {
|
||||
Ok(match mode {
|
||||
Computation::Eager => Self::Eager {
|
||||
@@ -133,7 +133,7 @@ where
|
||||
source1: BoxedAnyIterableVec<S1I, S1T>,
|
||||
source2: BoxedAnyIterableVec<S2I, S2T>,
|
||||
source3: BoxedAnyIterableVec<S3I, S3T>,
|
||||
compute: ComputeFrom3<T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
compute: ComputeFrom3<I, T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
) -> Result<Self> {
|
||||
Ok(match mode {
|
||||
Computation::Eager => Self::Eager {
|
||||
@@ -161,11 +161,7 @@ where
|
||||
Dependencies::From1(source, compute) => {
|
||||
let version = source.version();
|
||||
let mut iter = source.iter();
|
||||
let t = |i: I| {
|
||||
compute(i.unwrap_to_usize(), &mut *iter)
|
||||
.map(|v| (i, v))
|
||||
.unwrap()
|
||||
};
|
||||
let t = |i: I| compute(i, &mut *iter).map(|v| (i, v)).unwrap();
|
||||
vec.compute_to(max_from, 1, version, t, exit)
|
||||
}
|
||||
Dependencies::From2((source1, source2), compute) => {
|
||||
@@ -173,7 +169,7 @@ where
|
||||
let mut iter1 = source1.iter();
|
||||
let mut iter2 = source2.iter();
|
||||
let t = |i: I| {
|
||||
compute(i.unwrap_to_usize(), &mut *iter1, &mut *iter2)
|
||||
compute(i, &mut *iter1, &mut *iter2)
|
||||
.map(|v| (i, v))
|
||||
.unwrap()
|
||||
};
|
||||
@@ -185,7 +181,7 @@ where
|
||||
let mut iter2 = source2.iter();
|
||||
let mut iter3 = source3.iter();
|
||||
let t = |i: I| {
|
||||
compute(i.unwrap_to_usize(), &mut *iter1, &mut *iter2, &mut *iter3)
|
||||
compute(i, &mut *iter1, &mut *iter2, &mut *iter3)
|
||||
.map(|v| (i, v))
|
||||
.unwrap()
|
||||
};
|
||||
|
||||
@@ -84,41 +84,6 @@ where
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn version(&self) -> Version {
|
||||
self.computed_version.unwrap()
|
||||
}
|
||||
|
||||
pub fn len(&self) -> usize {
|
||||
self.inner.len()
|
||||
}
|
||||
pub fn is_empty(&self) -> bool {
|
||||
self.inner.is_empty()
|
||||
}
|
||||
|
||||
pub fn name(&self) -> String {
|
||||
self.inner.name()
|
||||
}
|
||||
|
||||
pub fn modified_time(&self) -> Result<Duration> {
|
||||
self.inner.modified_time()
|
||||
}
|
||||
|
||||
// pub fn vec(&self) -> &StoredVec<I, T> {
|
||||
// &self.inner
|
||||
// }
|
||||
|
||||
// pub fn mut_vec(&mut self) -> &StoredVec<I, T> {
|
||||
// &mut self.inner
|
||||
// }
|
||||
|
||||
// pub fn any_vec(&self) -> &dyn AnyVec {
|
||||
// &self.inner
|
||||
// }
|
||||
|
||||
// pub fn mut_any_vec(&mut self) -> &mut dyn AnyVec {
|
||||
// &mut self.inner
|
||||
// }
|
||||
|
||||
pub fn path(&self) -> &Path {
|
||||
self.inner.path()
|
||||
}
|
||||
@@ -134,6 +99,7 @@ where
|
||||
self.inner.reset()?;
|
||||
}
|
||||
version.write(path.as_ref())?;
|
||||
self.computed_version = Some(version);
|
||||
|
||||
if self.is_empty() {
|
||||
info!("Computing {}...", self.name())
|
||||
@@ -142,10 +108,6 @@ where
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn iter(&self) -> StoredVecIterator<I, T> {
|
||||
self.into_iter()
|
||||
}
|
||||
|
||||
pub fn compute_to<F>(
|
||||
&mut self,
|
||||
max_from: I,
|
||||
@@ -541,7 +503,7 @@ where
|
||||
{
|
||||
#[inline]
|
||||
fn version(&self) -> Version {
|
||||
self.inner.version()
|
||||
self.computed_version.unwrap()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
||||
@@ -5,15 +5,15 @@ use crate::{
|
||||
BoxedVecIterator, CollectableVec, Result, StoredIndex, StoredType, Value, Version,
|
||||
};
|
||||
|
||||
pub type ComputeFrom1<T, S1I, S1T> =
|
||||
for<'a> fn(usize, &mut dyn BaseVecIterator<Item = (S1I, Value<'a, S1T>)>) -> Option<T>;
|
||||
pub type ComputeFrom1<I, T, S1I, S1T> =
|
||||
for<'a> fn(I, &mut dyn BaseVecIterator<Item = (S1I, Value<'a, S1T>)>) -> Option<T>;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct LazyVecFrom1<I, T, S1I, S1T> {
|
||||
name: String,
|
||||
version: Version,
|
||||
source: BoxedAnyIterableVec<S1I, S1T>,
|
||||
compute: ComputeFrom1<T, S1I, S1T>,
|
||||
compute: ComputeFrom1<I, T, S1I, S1T>,
|
||||
phantom: PhantomData<I>,
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ where
|
||||
name: &str,
|
||||
version: Version,
|
||||
source: BoxedAnyIterableVec<S1I, S1T>,
|
||||
compute: ComputeFrom1<T, S1I, S1T>,
|
||||
compute: ComputeFrom1<I, T, S1I, S1T>,
|
||||
) -> Self {
|
||||
Self {
|
||||
name: name.to_owned(),
|
||||
@@ -60,8 +60,8 @@ where
|
||||
type Item = (I, Value<'a, T>);
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
let opt = (self.lazy.compute)(self.index, &mut *self.source)
|
||||
.map(|v| (I::from(self.index), Value::Owned(v)));
|
||||
let index = I::from(self.index);
|
||||
let opt = (self.lazy.compute)(index, &mut *self.source).map(|v| (index, Value::Owned(v)));
|
||||
if opt.is_some() {
|
||||
self.index += 1;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ use crate::{
|
||||
BoxedVecIterator, CollectableVec, Result, StoredIndex, StoredType, Value, Version,
|
||||
};
|
||||
|
||||
pub type ComputeFrom2<T, S1I, S1T, S2I, S2T> = for<'a> fn(
|
||||
usize,
|
||||
pub type ComputeFrom2<I, T, S1I, S1T, S2I, S2T> = for<'a> fn(
|
||||
I,
|
||||
&mut dyn BaseVecIterator<Item = (S1I, Value<'a, S1T>)>,
|
||||
&mut dyn BaseVecIterator<Item = (S2I, Value<'a, S2T>)>,
|
||||
) -> Option<T>;
|
||||
@@ -17,7 +17,7 @@ pub struct LazyVecFrom2<I, T, S1I, S1T, S2I, S2T> {
|
||||
version: Version,
|
||||
source1: BoxedAnyIterableVec<S1I, S1T>,
|
||||
source2: BoxedAnyIterableVec<S2I, S2T>,
|
||||
compute: ComputeFrom2<T, S1I, S1T, S2I, S2T>,
|
||||
compute: ComputeFrom2<I, T, S1I, S1T, S2I, S2T>,
|
||||
phantom: PhantomData<I>,
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ where
|
||||
version: Version,
|
||||
source1: BoxedAnyIterableVec<S1I, S1T>,
|
||||
source2: BoxedAnyIterableVec<S2I, S2T>,
|
||||
compute: ComputeFrom2<T, S1I, S1T, S2I, S2T>,
|
||||
compute: ComputeFrom2<I, T, S1I, S1T, S2I, S2T>,
|
||||
) -> Self {
|
||||
Self {
|
||||
name: name.to_string(),
|
||||
@@ -71,8 +71,9 @@ where
|
||||
type Item = (I, Value<'a, T>);
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
let opt = (self.lazy.compute)(self.index, &mut *self.source1, &mut *self.source2)
|
||||
.map(|v| (I::from(self.index), Value::Owned(v)));
|
||||
let index = I::from(self.index);
|
||||
let opt = (self.lazy.compute)(index, &mut *self.source1, &mut *self.source2)
|
||||
.map(|v| (index, Value::Owned(v)));
|
||||
if opt.is_some() {
|
||||
self.index += 1;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ use crate::{
|
||||
BoxedVecIterator, CollectableVec, Result, StoredIndex, StoredType, Value, Version,
|
||||
};
|
||||
|
||||
pub type ComputeFrom3<T, S1I, S1T, S2I, S2T, S3I, S3T> = for<'a> fn(
|
||||
usize,
|
||||
pub type ComputeFrom3<I, T, S1I, S1T, S2I, S2T, S3I, S3T> = for<'a> fn(
|
||||
I,
|
||||
&mut dyn BaseVecIterator<Item = (S1I, Value<'a, S1T>)>,
|
||||
&mut dyn BaseVecIterator<Item = (S2I, Value<'a, S2T>)>,
|
||||
&mut dyn BaseVecIterator<Item = (S3I, Value<'a, S3T>)>,
|
||||
@@ -19,7 +19,7 @@ pub struct LazyVecFrom3<I, T, S1I, S1T, S2I, S2T, S3I, S3T> {
|
||||
source1: BoxedAnyIterableVec<S1I, S1T>,
|
||||
source2: BoxedAnyIterableVec<S2I, S2T>,
|
||||
source3: BoxedAnyIterableVec<S3I, S3T>,
|
||||
compute: ComputeFrom3<T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
compute: ComputeFrom3<I, T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
phantom: PhantomData<I>,
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ where
|
||||
source1: BoxedAnyIterableVec<S1I, S1T>,
|
||||
source2: BoxedAnyIterableVec<S2I, S2T>,
|
||||
source3: BoxedAnyIterableVec<S3I, S3T>,
|
||||
compute: ComputeFrom3<T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
compute: ComputeFrom3<I, T, S1I, S1T, S2I, S2T, S3I, S3T>,
|
||||
) -> Self {
|
||||
Self {
|
||||
name: name.to_string(),
|
||||
@@ -81,13 +81,14 @@ where
|
||||
type Item = (I, Value<'a, T>);
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
let index = I::from(self.index);
|
||||
let opt = (self.lazy.compute)(
|
||||
self.index,
|
||||
index,
|
||||
&mut *self.source1,
|
||||
&mut *self.source2,
|
||||
&mut *self.source3,
|
||||
)
|
||||
.map(|v| (I::from(self.index), Value::Owned(v)));
|
||||
.map(|v| (index, Value::Owned(v)));
|
||||
if opt.is_some() {
|
||||
self.index += 1;
|
||||
}
|
||||
|
||||
@@ -163,11 +163,6 @@ where
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// #[inline]
|
||||
// fn version(&self) -> Version {
|
||||
// self.version
|
||||
// }
|
||||
}
|
||||
|
||||
impl<I, T> AnyVec for RawVec<I, T>
|
||||
|
||||
Reference in New Issue
Block a user