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很快,问题不在这里,继续测试。
欲知后事如何且听下回分解。