收藏
回答

【小程序】setData有严重的性能问题?

如下图,WAService.js中的setData占用了大量时间

当列表数据量很大时,我做了回收处理,只渲染10条数据,进行数量加一操作时,一条数据进行setdata,set的数据量很少,但是还是有性能问题。

很迷茫啊,不知道怎么优化,有没有大佬指点一下

下图:searchGoods数据量少,20条时,同等操作

下图::searchGoods数据量中,300条时,同等操作

下图::searchGoods数据量中,1000条时,同等操作

选择一张图,可以看到,一次操作,进行了三次setdata,数据量不大时,时间都有增长,第一个searchGoods的setdata时间增长最明显,但是searchGoods没有与视图直接绑定

1000条时,点击数量加1,三次setdata明细如下:

1.第一次setData的searchGoods传入了组件中,组件处理后,将裁剪的visibleData传入插槽,visibleData才真正与视图绑定

searchGoods的setdata花费了大量时间,这里我就不太明白

20条数据,第一次setdata searchGoods时间:

1000条数据,第一次setdata searchGoods时间:

2.第二个setData,汇总数据和购物车,执行时间参考上面的图片

3.第三个setData,searchGoods裁切后得到的visibleData,visibleData与视图绑定,执行时间参考上面的图片

下面是 C方法:

下面是doUpdates方法:

最后一次编辑于  2021-05-08
回答关注问题邀请回答
收藏

3 个回答

  • 大胖余
    大胖余
    2021-05-08

    你这边怎么处理的数据的 能否截图代码片段

    2021-05-08
    有用 1
    回复 5
    • A
      A
      2021-05-08
      这是不是你要的
      2021-05-08
      回复
    • A
      A
      2021-05-08
      还有一段long-list组件的代码
      2021-05-08
      1
      回复
    • A
      A
      2021-05-08
      product-count组件里是:
      2021-05-08
      回复
    • A
      A
      2021-05-08
      long-list传入的listData就是searchGoods
      2021-05-08
      回复
    • 大胖余
      大胖余
      2021-05-10回复A
      就是每次截取数组里面的数据 然后传入组件内 进行渲染  也就是组件其实就 setData了 传入的 list的数据   每次setData的数据 也不是很多  这样看来 确实是setData的性能问题,我记得以前列表太多了  会导致黑屏 这个也许就是setData的问题 即使优化了数据结构 也还是不行
      2021-05-10
      回复
  • 薯饼啦🐕
    薯饼啦🐕
    2021-10-18

    这个性能图是在哪里可以看到的呀,现在也遇到性能问题了,找不到地方可以分析

    2021-10-18
    有用
    回复 1
    • A
      A
      2021-10-20
      我现在也找不到了,之前就是微信开发工具里的
      2021-10-20
      回复
  • A
    A
    2021-05-12

    点击数量+1,触发了三次setdata。

    第一次:占用时间最长。这次setdata不应该发生,列表并没有与视图直接绑定

    第二次:必要更新 汇总数据和购物车

    第三次:必要更新 列表真实渲染的数据

    2021-05-12
    有用
    回复 1
    • Thinker
      Thinker
      2021-06-10
      我的理解是第一次如果不是跟视图直接绑定的话,建议不要使用setData,直接放在对象下面就好
      2021-06-10
      回复
登录 后发表内容