combin-iterator 0.2.2

Some usefull facilities for combining iterators
Documentation
#![feature(test)]
extern crate test;
use test::{Bencher, bench::black_box};

use combin_iterator::altern::BiAltern;

#[bench]
fn create_100000x2(b: &mut Bencher) {
    b.iter(||{
        black_box(BiAltern::new(0..100000, 0..100000));
    });
}

#[bench]
fn create_100000x4(b: &mut Bencher) {
    b.iter(||{
        black_box(BiAltern::new(BiAltern::new(0..100000, 0..100000), BiAltern::new(0..100000, 0..100000)));
    });
}


#[bench]
fn create_and_count_100000x2(b: &mut Bencher) {
    b.iter(||{
        let iter = BiAltern::new(0..100000, 0..100000);
        black_box(iter.count());
    });
}

#[bench]
fn create_and_count_100000x4(b: &mut Bencher) {
    b.iter(||{
        let iter = BiAltern::new(BiAltern::new(0..100000, 0..100000), BiAltern::new(0..100000, 0..100000));
        black_box(iter.count());
    });
}

#[bench]
fn create_and_count_100000x8(b: &mut Bencher) {
    b.iter(||{
        let iter = BiAltern::new(BiAltern::new(BiAltern::new(0..100000, 0..100000), BiAltern::new(0..100000, 0..100000)), BiAltern::new(BiAltern::new(0..100000, 0..100000), BiAltern::new(0..100000, 0..100000)));
        black_box(iter.count());
    });
}

#[bench]
fn create_and_count_50000x16(b: &mut Bencher) {
    b.iter(||{
        let iter1 = BiAltern::new(BiAltern::new(BiAltern::new(0..50000, 0..50000), BiAltern::new(0..50000, 0..50000)), BiAltern::new(BiAltern::new(0..50000, 0..50000), BiAltern::new(0..50000, 0..50000)));
        let iter2 = BiAltern::new(BiAltern::new(BiAltern::new(0..50000, 0..50000), BiAltern::new(0..50000, 0..50000)), BiAltern::new(BiAltern::new(0..50000, 0..50000), BiAltern::new(0..50000, 0..50000)));
        let iter = BiAltern::new(iter1, iter2);
        black_box(iter.count());
    });
}

#[bench]
fn create_and_count_20000x32(b: &mut Bencher) {
    b.iter(||{
        let iter1 = BiAltern::new(BiAltern::new(BiAltern::new(0..20000, 0..20000), BiAltern::new(0..20000, 0..20000)), BiAltern::new(BiAltern::new(0..20000, 0..20000), BiAltern::new(0..20000, 0..20000)));
        let iter2 = BiAltern::new(BiAltern::new(BiAltern::new(0..20000, 0..20000), BiAltern::new(0..20000, 0..20000)), BiAltern::new(BiAltern::new(0..20000, 0..20000), BiAltern::new(0..20000, 0..20000)));
        let iter3 = BiAltern::new(iter1, iter2);

        let iter4 = BiAltern::new(BiAltern::new(BiAltern::new(0..20000, 0..20000), BiAltern::new(0..20000, 0..20000)), BiAltern::new(BiAltern::new(0..20000, 0..20000), BiAltern::new(0..20000, 0..20000)));
        let iter5 = BiAltern::new(BiAltern::new(BiAltern::new(0..20000, 0..20000), BiAltern::new(0..20000, 0..20000)), BiAltern::new(BiAltern::new(0..20000, 0..20000), BiAltern::new(0..20000, 0..20000)));
        let iter6 = BiAltern::new(iter4, iter5);

        let iter = BiAltern::new(iter3, iter6);
        black_box(iter.count());
    });
}