comp + vec: snapshot before bug hunting

This commit is contained in:
nym21
2025-05-06 00:44:39 +02:00
parent 9ba3c2b7c5
commit aa30feb875
15 changed files with 585 additions and 899 deletions
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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"] }
+2 -2
View File
@@ -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,
+11 -15
View File
@@ -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()
};
+2 -40
View File
@@ -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]
+6 -6
View File
@@ -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;
}
+7 -6
View File
@@ -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;
}
+7 -6
View File
@@ -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;
}
-5
View File
@@ -163,11 +163,6 @@ where
Ok(())
}
// #[inline]
// fn version(&self) -> Version {
// self.version
// }
}
impl<I, T> AnyVec for RawVec<I, T>