14个版本 (5个破坏性版本)
新 0.6.0 | 2024年8月22日 |
---|---|
0.5.0 | 2024年3月14日 |
0.4.0 | 2024年2月27日 |
0.3.1 | 2024年1月5日 |
0.1.3 | 2022年12月10日 |
#81 in WebAssembly
每月下载量 12,125
用于 24 个仓库 (2个直接使用)
36KB
189 代码行
大锤绑定生成器
什么是Sledgehammer Bindgen?
Sledgehammer bindgen为js代码提供了更快的Rust批量绑定。
这与wasm-bindgen相比如何
-
wasm-bindgen更加通用,它允许返回值和传递更多不同类型的值。对于大多数用户来说,wasm-bindgen是一个更好的选择。Sledgehammer专门设计用于需要底层、快速访问DOM的Web框架。
-
您可以使用Sledgehammer bindgen与wasm-bindgen一起使用。有关更多信息,请参阅文档和示例。
为什么它这么快?
字符串解码
-
字符串解码成本很高,但成本不会随着字符串大小的增加而显著变化。wasm-bindgen对每个字符串调用TextDecoder.decode。Sledgehammer只在每个批次中调用TextEncoder.decode一次。
-
如果字符串很小,则在JavaScript中解码字符串会更快,从而避免了TextDecoder.decode的恒定开销。
-
请参阅此基准测试:https://jsbench.me/4vl97c05lb/5
字符串缓存
- 您可以在JavaScript中缓存字符串以避免多次解码相同的字符串。
- 如果字符串是静态的,Sledgehammer将通过指针而不是值进行哈希。
字节编码操作
-
在Sledgehammer中,每个操作都被编码为一系列字节,这些字节被打包到一个数组中。每个操作占用1个字节加上所需的数据。
-
每个操作都在一个四元素批次中编码为u32。从数组缓冲区获取数字具有很高的恒定成本,但获取u32而不是u8并不更昂贵。Sledgehammer bindgen读取u32,然后将其拆分为4个单独的字节。它将字节重新排序并尽可能少地打包到桶中,并尝试将读取内联到js中。
-
请参阅此基准测试:https://jsbench.me/csl9lfauwi/2
依赖项
~0.2–0.8MB
~18K SLoC