Skip to content
风起
风起

wasm VS js,谁快?(三)深拷贝

回顾

开始新内容前让我们先回忆下之前的内容,之前我们构造了一棵约30万个节点的树,测出来结果 wasm比js慢约4倍,比较反直觉,所以我们拆分成:

我们用一个循环反复对一个节点深拷贝,用 len 控制拷贝次数。

bash
#[wasm_bindgen]
#[derive(Clone)]
pub struct Item {
    name: String,
    children: Vec<Item>,
}

#[wasm_bindgen]
pub fn copyFun(len: usize) {
  let mut nodeStack = vec![];
	let tempNode = Item {
        name: String::from(""),
        children: vec![],
    };
    for i in 0..len {
        let mut curItem = tempNode.clone();
        curItem.name = format!("node_{}", i);
        nodeStack.push(curItem);
    }
}
bash
const copyFun = (len) => {
    const nodeList = [];
    const tempNode = {
    	name: '',
    	children: [],
	};
    for (let i=0; i<len; i++) {
        const curItem = JSON.parse(JSON.stringify(tempNode));
        curItem.name = `node_${i}`;
        nodeList.push(curItem);
    }
}

bash
wasm-copy: 7.875 ms
js-copy: 12.510009765625 ms

可以看到还是 wasm很快,问题不在这里,继续测试。

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