I wrote a basic sum array function in both JS and Rust. Size of the array was 1 million. Node gave me the result in 4 ms whereas Rust took 15.4 ms (both on my laptop).
Why such a significant difference, given all the advantages that Rust has?
JS Code
const calcSum = arr => {
let sum = 0;
let i = arr.length;
while(i--) sum += arr[i];
return sum;
};
const run = size => {
const arr = Array.from(Array(size).keys());
const start = Date.now();
const sum = calcSum(arr);
const dur = Date.now() - start;
console.log(sum, dur);
};
run(1e6);
Rust Code
use std::time::Instant;
const SIZE: i64 = 1e6 as i64;
fn main() {
let a = get_array(SIZE);
let now = Instant::now();
let sum = calc_sum(&a);
let tme = Instant::now().duration_since(now);
println!("{}, {:?}", sum, tme);
}
fn calc_sum(a: &Vec<i64>) -> i64 {
let mut sum = 0;
for n in a {
sum += n;
}
sum
}
fn get_array(size: i64) -> Vec<i64> {
let mut a: Vec<i64> = Vec::new();
for i in 0..size {
a.push(i);
}
a
}