This commit is contained in:
Dmitry Belyaev 2022-09-17 19:13:17 +03:00
parent c54269bef5
commit 122e47303b

View File

@ -246,12 +246,12 @@ impl From<&SourceQuestionsBatch> for BatchInfo {
}
}
impl Into<Vec<Question>> for SourceQuestionsBatch {
fn into(self) -> Vec<Question> {
let mut result = Vec::<Question>::with_capacity(self.questions.len());
self.questions.iter().for_each(|item| {
impl From<SourceQuestionsBatch> for Vec<Question> {
fn from(src: SourceQuestionsBatch) -> Self {
let mut result = Vec::<Question>::with_capacity(src.questions.len());
src.questions.iter().for_each(|item| {
let mut question: Question = item.clone().into();
question.batch_info = BatchInfo::from(&self);
question.batch_info = BatchInfo::from(&src);
result.push(question);
});
@ -264,7 +264,7 @@ pub fn measure<F: FnOnce()>(func: F) -> f64 {
let start = Instant::now();
func();
let elapsed = start.elapsed();
(elapsed.as_secs() as f64) + (elapsed.subsec_nanos() as f64 / 1000_000_000.0)
(elapsed.as_secs() as f64) + (elapsed.subsec_nanos() as f64 / 1_000_000_000.0)
}
pub fn measure_and_print<F: FnOnce()>(func: F) {
@ -308,19 +308,18 @@ fn writer_v4() {
(String::from(name_str), data)
})
.filter(|(_, data)| data.is_ok())
.map(|(filename, data)| {
.flat_map(|(filename, data)| {
let mut data = data.unwrap();
data.filename = filename.clone();
data.filename = filename;
let questions: Vec<Question> = data.into();
questions
})
.flatten()
.for_each(|question| {
let result = collection.insert(&question);
if result.is_err() {
println!(
"Error: {:?} \n\
On: {:?}",
On: {:?}",
result, question
);
} else {
@ -329,6 +328,11 @@ fn writer_v4() {
});
println!("inserted {}", count);
storage.sync(true).unwrap();
print!("stats: ");
let stats = storage.stat().unwrap();
println!("{:?}", stats);
drop(storage);
}
fn print_question(q: Question) {
@ -347,13 +351,7 @@ fn reader_v1() -> Option<Question> {
let data = data.unwrap();
let questions: Vec<Question> = data.into();
let ret = questions.iter().choose(&mut rng);
if let Some(question) = ret {
Some(question.clone())
} else {
None
}
questions.into_iter().choose(&mut rng)
}
fn compact_db() {
@ -367,13 +365,11 @@ fn compact_db() {
.unwrap();
let storage = Storage::new("db", options).unwrap();
//let collection = storage.collection("questions").unwrap();
//query!(index for collection
// num int,
// batch_info.filename str,
//)
//.unwrap();
storage.sync(true).unwrap();
let stats = storage.stat().unwrap();
println!("{:?}", stats);
drop(storage);
}
fn reader_v4() -> Option<Question> {