Skip to content

Commit

Permalink
opt: Stacked DRG: swap buffers instead of memcpy #1197
Browse files Browse the repository at this point in the history
  • Loading branch information
keyvank committed Jul 9, 2020
1 parent d62349c commit e1d553b
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions storage-proofs/porep/src/stacked/vanilla/proof.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,8 @@ impl<'a, Tree: 'static + MerkleTreeTrait, G: 'static + Hasher> StackedDrg<'a, Tr

let layer_size = graph.size() * NODE_SIZE;
// NOTE: this means we currently keep 2x sector size around, to improve speed.
let mut labels_buffer = vec![0u8; 2 * layer_size];
let mut layer_labels = vec![0u8; layer_size];
let mut exp_labels = vec![0u8; layer_size];

let use_cache = settings::SETTINGS.lock().unwrap().maximize_caching;
let mut cache = if use_cache {
Expand All @@ -315,27 +316,32 @@ impl<'a, Tree: 'static + MerkleTreeTrait, G: 'static + Hasher> StackedDrg<'a, Tr
}

if layer == 1 {
let layer_labels = &mut labels_buffer[..layer_size];
for node in 0..graph.size() {
create_label(graph, cache.as_mut(), replica_id, layer_labels, layer, node)?;
create_label(
graph,
cache.as_mut(),
replica_id,
&mut layer_labels,
layer,
node,
)?;
}
} else {
let (layer_labels, exp_labels) = labels_buffer.split_at_mut(layer_size);
for node in 0..graph.size() {
create_label_exp(
graph,
cache.as_mut(),
replica_id,
exp_labels,
layer_labels,
&exp_labels,
&mut layer_labels,
layer,
node,
)?;
}
}

info!(" setting exp parents");
labels_buffer.copy_within(..layer_size, layer_size);
std::mem::swap(&mut layer_labels, &mut exp_labels); // Results are in `exp_labels` now

// Write the result to disk to avoid keeping it in memory all the time.
let layer_config =
Expand All @@ -347,7 +353,7 @@ impl<'a, Tree: 'static + MerkleTreeTrait, G: 'static + Hasher> StackedDrg<'a, Tr
DiskStore::new_from_slice_with_config(
graph.size(),
Tree::Arity::to_usize(),
&labels_buffer[..layer_size],
&mut exp_labels,
layer_config.clone(),
)?;
info!(
Expand Down

0 comments on commit e1d553b

Please sign in to comment.