feat: parallelize pow gen
This commit is contained in:
parent
4bc6450d22
commit
c4bc8df0b8
1 changed files with 21 additions and 19 deletions
10
src/main.rs
10
src/main.rs
|
@ -1,5 +1,6 @@
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use pow_sha256::ConfigBuilder;
|
use pow_sha256::ConfigBuilder;
|
||||||
|
use rayon::prelude::*;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
|
|
||||||
|
@ -36,16 +37,17 @@ impl GenerateDeriveArgs {
|
||||||
let string = get_random(32);
|
let string = get_random(32);
|
||||||
let pow_config = ConfigBuilder::default().salt(salt.clone()).build().unwrap();
|
let pow_config = ConfigBuilder::default().salt(salt.clone()).build().unwrap();
|
||||||
|
|
||||||
for difficulty in self.start..self.max {
|
(self.start..self.max)
|
||||||
|
.into_par_iter()
|
||||||
|
.for_each(|difficulty| {
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
pow_config.prove_work(&string, difficulty).unwrap();
|
pow_config.prove_work(&string, difficulty).unwrap();
|
||||||
let finish = Instant::now();
|
let finish = Instant::now();
|
||||||
let time_elapsed = finish.duration_since(start);
|
let time_elapsed = finish.duration_since(start);
|
||||||
|
|
||||||
let time= time_elapsed.as_micros();
|
let time = time_elapsed.as_micros();
|
||||||
log::info!("Difficulty factor {difficulty} generated in {time}");
|
log::info!("Difficulty factor {difficulty} generated in {time}");
|
||||||
|
|
||||||
|
|
||||||
let log = Log {
|
let log = Log {
|
||||||
salt: salt.clone(),
|
salt: salt.clone(),
|
||||||
time,
|
time,
|
||||||
|
@ -57,7 +59,7 @@ impl GenerateDeriveArgs {
|
||||||
bincode::serialize(&log).unwrap(),
|
bincode::serialize(&log).unwrap(),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue