gpt4 book ai didi

javascript - 为什么 JS/React 比 WebAssembly/Rust 快得多?

转载 作者:行者123 更新时间:2023-12-05 00:39:07 25 4
gpt4 key购买 nike

我正在用 Rust (wasm_bindgen) 生成的 Wasm 做一些测试。让我眼花缭乱的是,JavaScript 的实现似乎比 Rust 的实现要快得多。
该程序正在创建 dict/object/map 的 n 项并将其推送到数组。
JavaScript 实现非常简单:

const createJSObjects = (amount: number) => {
const arr: Array<{ index: number }> = []
for (let i = 0; i < amount; i++) {
arr.push({
index: i
})
}
return arr
}
很容易。 Rust 的实现是类似的:
#[wasm_bindgen]
pub fn create_rust_objects(amount: usize) -> JsValue {
let mut arr: Vec<Obj> = vec![];
arr.reserve(amount);

for i in 0..amount {
let itm = Obj { index: i };
arr.push(itm);
}

JsValue::from_serde(&arr).unwrap()
}
我也尝试过使用哈希图向量:
let mut field = HashMap::new();
field.insert("index", i);
arr.push(field);
两者都同样“慢”。
我正在使用 wasm-build 附带的生成的 js 和 d.ts 文件导入 Wasm 二进制文件。
JavaScript 的速度至少是 rust 代码的两倍。为什么是这样?我在实现中做错了吗?该实现是根据 MDN 文档设置的。
我已将所有代码放入 React 项目 - https://github.com/Devalo/rust-react-wasm-test

最佳答案

答案是你很可能没有做错任何事。本质上,WASM 有可能更快,但并不总是更快。
我真的很喜欢 this quick read from Winston Chen他们在其中运行性能测试,将 Web 程序集与 vanilla JS 进行比较。
如果您对更深入的对话感兴趣,this talk by Surma at Google I/O '19信息量很大。来自视频:

Both JavaScript and Web Assembly have the same peak performance. They are equally fast. But it is much easier to stay on the fast path with Web Assembly than it is with JavaScript.

关于javascript - 为什么 JS/React 比 WebAssembly/Rust 快得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70250002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com