orf 0.1.0

Translates nucleotide sequences to Amino Acid sequences. (RNA and DNA, shifts reading frames and reverses)
#![feature(test)]
extern crate orf;
extern crate test;
extern crate num_cpus;

use test::Bencher;
use std::io::sink;

#[bench]
fn bench_100_simple_trans(b: &mut Bencher) {
    let input = include_bytes!("../tests/test-nucleo.FASTA");
    let mut output = sink();
    let n_threads = num_cpus::get() as u32;

    b.iter(|| {
        for _ in 0 .. 100 {
            orf::start_parse(input, &mut output, n_threads).expect("parse");
        }
    });
}

#[bench]
fn bench_many_small_trans(b: &mut Bencher) {
    let input = include_bytes!("../benches/test-nucleo_many_small.FASTA");
    bench_trans(b, input);
}

#[bench]
fn bench_many_big_trans(b: &mut Bencher) {
    let input = include_bytes!("../benches/test-nucleo_many_big.FASTA");
    bench_trans(b, input);
}

#[bench]
fn bench_single_huge(b: &mut Bencher) {
    let input = include_bytes!("../benches/test-nucleo_single_big.FASTA");
    bench_trans(b, input);
}

fn bench_trans(b: &mut Bencher, input: &[u8]) {
    let mut output = sink();
    let n_threads = num_cpus::get() as u32;
    b.iter(|| {
        orf::start_parse(input, &mut output, n_threads).expect("parse");
    });
}