WebIDL - `CanvasRenderingContext2d::set_fill_style()` 的性能变体 JsString

作者: ThomasHabets创建于 2026年7月7日更新于 2026年8月7日
标签frontend:webidl

set_fill_style() 已被弃用。看起来它在 95bf437f35eaef8ee0756dba8685b2ff2278536c 中被弃用,当时添加了 _str_gradient。对于 _str(),我是绝对反对的。将 &str 转换为 JsValue 以用于 set_fill_style_str() 占用了我的 UI 线程的 50%。我尝试创建一个渐变并缓存它,但这导致主 UI 线程的 CPU 时间突然飙升。使用以下方法绘制图像: * set_fill_style():绘制大约需要 35ms。 * set_fill_style_str():大约需要 73ms。 * set_fill_style_canvas_gradient():536ms (!) 这太慢了,尤其是在 UI 线程中。对于 _str(),时间用于转换为 JsValue,而对于 _canvas_gradient(),则是一个巨大的 __wbg_fillRect / fillRect这是我使用 set_fill_style() 的方式。渐变版本尚未提交,但类似。关键部分:

内容来源: wasm-bindgen/wasm-bindgen