blas 0.15.2

The package provides an interface to the Basic Linear Algebra Subprograms.
Documentation
use test::Bencher;

use blas::c::{Layout, Transpose, dgemv};

#[bench] fn dgemv_cm_00010(bencher: &mut Bencher) { run(Layout::ColumnMajor,    10, bencher) }
#[bench] fn dgemv_cm_00100(bencher: &mut Bencher) { run(Layout::ColumnMajor,   100, bencher) }
#[bench] fn dgemv_cm_01000(bencher: &mut Bencher) { run(Layout::ColumnMajor,  1000, bencher) }
#[bench] fn dgemv_cm_10000(bencher: &mut Bencher) { run(Layout::ColumnMajor, 10000, bencher) }

#[bench] fn dgemv_rm_00010(bencher: &mut Bencher) { run(Layout::RowMajor,    10, bencher) }
#[bench] fn dgemv_rm_00100(bencher: &mut Bencher) { run(Layout::RowMajor,   100, bencher) }
#[bench] fn dgemv_rm_01000(bencher: &mut Bencher) { run(Layout::RowMajor,  1000, bencher) }
#[bench] fn dgemv_rm_10000(bencher: &mut Bencher) { run(Layout::RowMajor, 10000, bencher) }

fn run(layout: Layout, m: i32, bencher: &mut Bencher) {
    let a = vec![1.0; (m * m) as usize];
    let x = vec![1.0; m as usize];
    let mut y = vec![1.0; m as usize];

    bencher.iter(|| {
        dgemv(layout, Transpose::None, m, m, 1.0, &a, m, &x, 1, 1.0, &mut y, 1)
    });
}