风起提示:由于技术的发展风起云涌,需留意文章时效,2023-06-28。
回顾
开始新内容前让我们先回忆下之前的内容,之前我们构造了一棵约30万个节点的树,测出来结果 wasm比js慢约4倍,比较反直觉,所以我们拆分成:循环、对象深拷贝、向量切片、数学函数、向量的插入和删除,对这几部分分别测试,看看到底哪里慢了。
我们已经测试了循环、深拷贝、向量切片及原始指针、向量尾部操作,对比结果是 wasm快。这篇内容我们测试下pow函数,和js对比看谁快。
构造pow函数的测试
我们用循环反复调用pow函数,用 len 控制调用次数。
rust代码
#[wasm_bindgen]
pub fn powFun(len: usize) {
let num: u32 = 10;
for i in 0..len {
num.pow(i.try_into().unwrap());
}
}
js代码
const powFun = (len) => {
const num = 10;
for (let i=0; i<len; i++) {
Math.pow(num, i);
}
}
结论
将 len=7000 传入执行,执行结果
wasm-pow: 0.0478515625 ms
js-pow: 1.115234375 ms
可以看到 wasm比js快约23倍, 问题不在这里,继续测试。
欲知后事如何且听下回分解。
更多精彩内容可关注风起的博客,微信公众号:听风说图