收藏
回答

WXWebAssembly在IOS微信小程序上性能是否受到限制?

基础库版本:v2.30.2

因为微信小程序没有支持回声算法,我便移植了自己的一套回声算法打包成wasm放到小程序里面调用。这个方式在安卓版本的小程序上是几乎完美运行的,但是在IOS的小程序上,声音断断续续,后来发现是每次调用wasm的接口进行回声消除说用的时间都特别长并且时间并不稳定。在安卓小程序上,1k个样本声音数据基本能稳定在50ms内处理完成,而在IOS的小程序上,这个时间最低也要300+ms,最长甚至需要1100ms。然后我把声音部分功能移植到h5页面,用同一个wasm,发现这块功能在Safari上可以完美运行,1k的声音样本数据处理的时间也非常快。这个问题我需要怎么去解决?是否有其他方案可以加速IOS小程序中wasm的计算时间或者小程序有没有针对回声消除有特定的API?

回答关注问题邀请回答
收藏

2 个回答

  • sine
    sine
    2023-05-30
    你说的没错,iOS小程序基于JSCore运行,由于没有jit,性能对比安卓会差一些。不过你可以把wasm放到worker内执行,wx.createWorker('workers/index.js', {useExperimentalWorker: true}) useExperimentalWorker设置为true会开启jit
    


    2023-05-30
    有用
    回复 3
    • 疯狂的代码
ᯤ⁶ᴳ
      疯狂的代码 ᯤ⁶ᴳ
      2023-11-29
      麻烦你们在官方教程文档里面说明啊,花了一个月时间移植到WebAssembly你突然间跟我说不行,离了个大谱
      2023-11-29
      回复
    • 杜瑞
      杜瑞
      03-07
      开启实验worker经常被杀死怎么处理?重新创建worker耗时影响整体业务怎么办
      03-07
      回复
    • 杜瑞
      杜瑞
      03-08回复杜瑞
      我这边是将ffmpeg中avcodec编译成wasm,然后集成到小程序项目里创建一个解码实验worker,然后将拉流获取的视频流数据送给这个worker做解码,但是每次解码几帧后worker就被杀死,xcode查看微信进程资源占用CPU120%左右,请问useExperimentalWorker被杀死是跟CPU占用有关,还是内存方面超限导致。
      03-08
      回复
  • 
    
    2023-03-29

    补充一下,测试的iOS机器是Iphone6和IPhone6 Plus。在IPhone X Max以上机型,没有这个情况。如果说是性能不够,但它却可以在Safari上流畅运行。

    2023-03-29
    有用
    回复
登录 后发表内容