- iOS端worker性能如何提升,iOS端主线程使用wasm报错如何解决?
问题1: 我的小程序是一个视频帧实时处理的小程序,图像处理算法已打包成wasm,由于算法耗时较长,所以放在了worker中执行,在PC端iOS模拟器和Android真机上都运行正常,但是在iPhone真机下整个小程序都特别的卡,主界面上的按钮响应都非常的慢。相关信息如下: 实验数据已经打开: useExperimentalWorker: true iPhone 11 Pro iOS18.0 WeChat8.0.53 问题2: 因为问题1迟迟未能解决,所以想当小程序处于iOS环境下,就在主线程中直接加载并实例化wasm模块,但完全一样的js胶水代码和wasm.br文件,还是在PC端iOS模拟器和Android真机上都运行正常,在iPhone真机上却无法正常进行实例化,这是因为js胶水代码修改的问题,还是什么其它问题呢? 我写了一个示例的代码片段来复现这个问题: https://developers.weixin.qq.com/s/B6NDtNmW7JVJ 具体报错如下: abort(Aborted(Assertion failed: JavaScript-side Wasm function table mirror is out of date!)). Build with -s ASSERTIONS=1 for more info. {type: "string", description: "abort(Aborted(Assertion failed: JavaScript-side Wasm function table mirror is out of date!)). Build with -s ASSERTIONS=1 for more info.", value: "abort(Aborted(Assertion failed: JavaScript-side Wasm function table mirror is out of date!)). Build with -s ASSERTIONS=1 for more info."} [图片]
星期一 23:09 - worker下如何修改wasm胶水代码?
我在小程序的page中已经通过修改胶水代码成功引入了自己编译的wasm,并可以正常调用。 但因wasm中的算法比较耗时,为避免影响主线程的界面响应,想在worker中使用wasm。由于微信小程序中的worker在使用方面有些限制,所以不知道该如何改写wasm的胶水代码。目前碰到以下问题: 问题1: [图片] 修改对应代码,注释掉带self.location的这句: else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { if (ENVIRONMENT_IS_WORKER) { // scriptDirectory = self.location.href } else if (typeof document != "undefined" && document.currentScript) { scriptDirectory = document.currentScript.src } if (_scriptDir) { scriptDirectory = _scriptDir } if (scriptDirectory.indexOf("blob:") !== 0) { scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1) } else { scriptDirectory = "" } 然后出现问题2: [图片] 网上很难找到比较有效的信息,在page中使用wasm修改胶水代码时已经费了很大功夫,现在转到worker中又要折腾一遍,貌似相关资料还更少了,官方能不能出一些修改胶水代码的教程指导一下呢?
04-09