Skip to content

Commit b4a924a

Browse files
Merge pull request #9 from georgeglidden/main
Rework `set_suffix_array_mem` method of SufrFile to avoid redundant re-loading
2 parents 8509a66 + 357249e commit b4a924a

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

libsufr/src/sufr_file.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,7 @@ where
512512
/// Args:
513513
/// * `max_query_len`: prefix length
514514
fn set_suffix_array_mem(&mut self, max_query_len: Option<usize>) -> Result<()> {
515+
515516
let mut max_query_len = max_query_len.unwrap_or(0);
516517

517518
// If ".sufr" file was built with a nonzero max_query_len or seed mask
@@ -535,8 +536,14 @@ where
535536
}
536537
}
537538

538-
// The requested MQL matches how the SA was built
539-
if max_query_len == built_max_query_len {
539+
// Do nothing if we've already loaded the correct SA/MQL
540+
if !self.suffix_array_mem.is_empty()
541+
&& self.suffix_array_mem_mql == Some(max_query_len)
542+
{
543+
info!("Using existing suffix_array_mem");
544+
return Ok(());
545+
} else if max_query_len == built_max_query_len {
546+
// The requested MQL matches how the SA was built
540547
// Stuff entire SA into memory
541548
let now = Instant::now();
542549
self.suffix_array_file.reset();
@@ -546,13 +553,6 @@ where
546553
// There will be no ranks
547554
self.suffix_array_rank_mem = vec![];
548555
} else {
549-
// Do nothing if we've already loaded the correct SA/MQL
550-
if !self.suffix_array_mem.is_empty()
551-
&& self.suffix_array_mem_mql == Some(max_query_len)
552-
{
553-
info!("Using existing suffix_array_mem");
554-
return Ok(());
555-
}
556556

557557
info!("Loading suffix_array_mem using max_query_len {max_query_len}");
558558

@@ -619,7 +619,6 @@ where
619619
} else {
620620
let now = Instant::now();
621621
let (sub_sa, sub_rank) = &self.subsample_suffix_array(max_query_len);
622-
self.suffix_array_mem_mql = Some(max_query_len);
623622
self.suffix_array_mem = sub_sa.to_vec();
624623
self.suffix_array_rank_mem = sub_rank.to_vec();
625624

@@ -663,6 +662,7 @@ where
663662
}
664663
}
665664
}
665+
self.suffix_array_mem_mql = Some(max_query_len);
666666

667667
Ok(())
668668
}

0 commit comments

Comments
 (0)