-
Notifications
You must be signed in to change notification settings - Fork 360
Description
I made a comparison between ndarray and nalgebra dot products of 3d-Vectors. The performance difference is very large whith ndarray being 12 times slower than nalgebra.
Please find the code below. Did I do anything wrong? I would like to create a python module that calls rust functions and as far as I have seen this is easily possible with ndarray but not nalgebra.
Thanks in advance
Rolf
output:
sum1 = 3599999.999718683 dt1 = 114209136
sum2 = 3599999.999718683 dt2 = 8604722
main.rs:
#![allow(non_snake_case)]
#![allow(unused)]
#[macro_use]
extern crate ndarray;
extern crate nalgebra;
use ndarray::prelude::*;
use ndarray::{arr1, arr2, Array1, Array2};
use nalgebra::Vector3;
use std::time::{Duration, Instant};
fn main() {
let n = 10000000;
let mut sum1 = 0.0;
let b1 = arr1(&[1.0, 0.2, 0.3]);
let b2 = arr1(&[0.1, 1.0, 0.2]);
let t1 = Instant::now();
for i in 0..n {
sum1 += b1.dot(&b2);
}
let dt1 = t1.elapsed().as_nanos();
println!("sum1 = {} dt1 = {}", sum1, dt1);
let mut sum2 = 0.0;
let b1 = Vector3::new(1.0, 0.2, 0.3);
let b2 = Vector3::new(0.1, 1.0, 0.2);
let t1 = Instant::now();
for i in 0..n {
sum2 += b1.dot(&b2);
}
let dt2 = t1.elapsed().as_nanos();
println!("sum2 = {} dt2 = {}", sum2, dt2);
println!("dt1/dt2 = {}", dt1/dt2);
}
Cargo.toml:
[package]
name = "dottest"
version = "0.1.0"
authors = ["ropewe56"]
edition = "2018"
[dependencies]
ndarray = "0.12.1"
nalgebra = "0.18.0"