Comments (9)
方便给一下完整可用的小程序代码包,构建完成之后,可以直接跑的就行。这里对 setData 调用有个聚合,我看看是不是和这里有关。
from kbone.
Thanks @JuneAndGreen , 我仅仅删除了外层的 node_modules 减少体积,你可以 yarn 之后进行复现
from kbone.
查了下,这个应该是小程序的瓶颈,和框架无关。因为小程序本身没有 window.requestAnimationFrame,所以这里是 setTimeout 模拟的,16 ms 调一次。而小程序本身是双线程的限制,调 setData 到 webview 端会有一定的损耗,在低端机尤其明显,你看到的卡帧就是小程序 webview 端接收到数据有一定延迟,然后做组件树diff和渲染也有一些损耗导致。你可以尝试直接用 setTimeout 来调整时间间隔,看看能否符合预期(其实就是降低帧数的意思)。
如果实在不行的话,得等后续我们支持 wxs 响应事件这个特性再试试了(https://developers.weixin.qq.com/miniprogram/dev/framework/view/interactive-animation.html)。另外这个特性有一定的局限,它直接在 webview 执行,所以无法直接和 appService 端交互的。
from kbone.
谢谢回复
- debug 性能下降非常明显,在 Android 尤甚
- 小程序的 trace 好像不支持自定义组件,profile 是个难题,我直接用模拟器的 JavaScriptProfiler 有点效果,但是 trace 不到 app service 层的代码,目前看下来 onChildNodesUpdate 方法是 cpu 热点,主要应该是调用了过多的 setData 导致,还没想好怎么优化,有思路请分享一下,我去试试。
from kbone.
- 另外我用原生小程序其实没有这个性能问题的
- 之前requestAnimationFrame 尝试过降低帧数,有效果,但还是降低了体验,还是想看看有没有更根本的办法
from kbone.
原生小程序你是怎么做 requestAnimationFrame 的呢?我之前按照原样的结构和逻辑试了一下原生小程序是同样的效果的(11个anime组件,每隔16ms更新一次 translate)。这里你只是修改 style 的话,setData 数量应该是和原生小程序一样的多的,因为只有一个节点属性变更。
from kbone.
- 一样使用 setTimeout 来进行模拟,16ms 一帧
from kbone.
方便给下你原生小程序尝试的代码么?我之前模拟看到是有同样的问题的。
from kbone.
暂无其他反馈,先 closed,后有复现可 reopen 或另建 issue。
from kbone.
Related Issues (20)
- ios真机调试报错 selector = selector.replace(regexp, onProcess) HOT 1
- npm run build,h5空白 HOT 1
- vue-cli-plugin-kbone 是不是不支持webpack5项目 HOT 2
- kbone页面节点1000左右的时候,小程序就会变卡顿吗,即使没有在setData,滑动都感觉不流畅 HOT 11
- wx-input 组件 触发input 事件的时候,没监听事件返回值,以及不会同步外部value的值。 HOT 2
- 【讨论】新的小程序组件框架 glass-easel HOT 1
- wx-button open-type="agreePrivacyAuthorization" 回调无法触发 HOT 4
- -
- 是否可以支持 Construct 3 引擎? HOT 3
- createIntersectionObserver().relativeToViewport().observe() 问题 HOT 9
- npm install的时候报错,依赖冲突了 HOT 1
- 'rimraf' 不是内部或外部命令,也不是可运行的程序 HOT 1
- kbone递归方案 HOT 1
- 使用window.$$createIntersectionObserver()页面报错异常错误
- 组件属性对齐:input 组件 auto-focus 即将弃用,需要使用 focus 替代 HOT 1
- img xhr 列表下的img的src在init的时候会把所有的图片都通过xhrget一遍,在图片列表较大的时候很影响 HOT 10
- 请问在vue3项目中使用kbone-ui的mp-navigation-bar组件时,如何绑定bindback事件? HOT 3
- 小程序内嵌视频号视频,无法加载到wx-channel-video组件 HOT 11
- 瓦片地图【image】标签在图片较大时(100k左右)在真机环境不显示 HOT 1
- 请求 Blazor WebAssmebly 支持 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kbone.