wasm VS js,谁快?(二)循环
回顾
开始新内容前让我们先回忆下之前的内容,之前我们构造了一棵约30万个节点的树,测出来结果 wasm比js慢约4倍,比较反直觉,所以我们拆分成:
我们构造一个相同结构的4层嵌套循环,循环里只执行简单的加法运算,参数 len 可控制每层遍历的个数,从而调整循环总次数。
这样我们可以调整 len 直到能看出wasm和js跑的差异为止。
rust代码
bash
#[wasm_bindgen]
pub fn forFun(len: usize) -> usize {
let mut total = 0;
for i in 0..len {
total += i;
for j in 0..len {
total += j;
for m in 0..len {
total += m;
for n in 0..len {
total += n;
}
}
}
}
total
}
js代码
bash
const forFun = (len) => {
let total = 0;
for (let i=0; i<len; i++) {
total += i;
for (let j=0; j<len; j++) {
total += j;
for (let m=0; m<len; m++) {
total += m;
for (let n=0; n<len; n++) {
total += n;
}
}
}
}
return total;
}
将 len=50 传入执行,执行结果
bash
wasm-for: 0.138916015625 ms
js-for: 13.94189453125 ms
可以看到wasm明显快,问题不在这里,继续测试。
欲知后事如何且听下回分解。