wasm VS js,谁快?(五)数学函数

117 阅读1分钟

风起提示:由于技术的发展风起云涌,需留意文章时效,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倍, 问题不在这里,继续测试。

欲知后事如何且听下回分解。

更多精彩内容可关注风起的博客,微信公众号:听风说图