bbqvec 0.0.10

Scalable, embeddable, vector storage for approximate K-nearest-neighbors (AKNN)
Documentation
use bbqvec::Bitmap;
use bitvec::prelude::*;
use std::ops::BitOr;

use criterion::{black_box, Criterion};
use rand::Rng;

pub fn criterion_benchmark_micro(c: &mut Criterion) {
    c.bench_function("create_random_vector_100", |b| {
        b.iter(|| bbqvec::create_random_vector(100))
    });
    c.bench_function("normalize_100", |b| {
        let mut vec = bbqvec::create_random_vector(100);
        b.iter(|| bbqvec::vector::normalize(&mut vec));
    });
    c.bench_function("dot_product_100", |b| {
        let vec = bbqvec::create_random_vector(100);
        let normal = bbqvec::create_random_vector(100);
        b.iter(|| bbqvec::vector::dot_product(&vec, &normal));
    });
    c.bench_function("roaring", |b| {
        let mut x = roaring::RoaringBitmap::new();
        let mut y = roaring::RoaringBitmap::new();
        for _ in 0..20000 {
            x.insert(rand::thread_rng().gen_range(0..2000000));
            y.insert(rand::thread_rng().gen_range(0..2000000));
        }
        b.iter(|| {
            black_box((&x).bitor(&y));
        });
    });
    c.bench_function("bitmap", |b| {
        let mut x = BitVec::<usize, Lsb0>::new();
        let mut y = BitVec::new();
        for _ in 0..20000 {
            x.add(rand::thread_rng().gen_range(0..2000000));
            y.add(rand::thread_rng().gen_range(0..2000000));
        }
        b.iter(|| {
            black_box({
                let mut z = BitVec::new();
                z = z.bitor(&x);
                z = z.bitor(&y);
                z
            });
        });
    });
}