feat: parallelize pow gen

This commit is contained in:
Aravinth Manivannan 2023-07-09 16:15:16 +05:30
parent 4bc6450d22
commit c4bc8df0b8
Signed by: realaravinth
GPG key ID: AD9F0F08E855ED88

View file

@ -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,7 +37,9 @@ 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();
@ -45,7 +48,6 @@ impl GenerateDeriveArgs {
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();
} });
} }
} }