diff --git a/src/test/bench/shootout-k-nucleotide.rs b/src/test/bench/shootout-k-nucleotide.rs index a1daf45cea902..865b3a0372671 100644 --- a/src/test/bench/shootout-k-nucleotide.rs +++ b/src/test/bench/shootout-k-nucleotide.rs @@ -11,8 +11,12 @@ // ignore-android see #10393 #13206 // ignore-pretty +extern crate sync; + use std::strbuf::StrBuf; use std::slice; +use sync::Arc; +use sync::Future; static TABLE: [u8, ..4] = [ 'A' as u8, 'C' as u8, 'G' as u8, 'T' as u8 ]; static TABLE_SIZE: uint = 2 << 16; @@ -202,10 +206,9 @@ fn unpack_symbol(c: u8) -> u8 { TABLE[c as uint] } -fn generate_frequencies(frequencies: &mut Table, - mut input: &[u8], - frame: uint) { - if input.len() < frame { return; } +fn generate_frequencies(mut input: &[u8], frame: uint) -> Table { + let mut frequencies = Table::new(); + if input.len() < frame { return frequencies; } let mut code = Code(0); // Pull first frame. @@ -220,6 +223,7 @@ fn generate_frequencies(frequencies: &mut Table, frequencies.lookup(code, BumpCallback); input = input.slice_from(1); } + frequencies } fn print_frequencies(frequencies: &Table, frame: uint) { @@ -266,20 +270,21 @@ fn main() { } else { get_sequence(&mut std::io::stdin(), ">THREE") }; - - let mut frequencies = Table::new(); - generate_frequencies(&mut frequencies, input.as_slice(), 1); - print_frequencies(&frequencies, 1); - - frequencies = Table::new(); - generate_frequencies(&mut frequencies, input.as_slice(), 2); - print_frequencies(&frequencies, 2); - - for occurrence in OCCURRENCES.iter() { - frequencies = Table::new(); - generate_frequencies(&mut frequencies, - input.as_slice(), - occurrence.len()); - print_occurrences(&mut frequencies, *occurrence); + let input = Arc::new(input); + + let nb_freqs: Vec<(uint, Future