1
gainsurier 2022-07-21 13:36:31 +08:00
稳定性和性能是两回事...
|
2
kop1989smurf 2022-07-21 13:39:03 +08:00
之前做过跨平台应用,架构是 native app 套壳。
使用 xcode 实现的 wkwebview ,性能和安卓的 webview 没发现本质区别。 楼主是怎么排除 uniapp 本身的问题的? |
3
Features OP |
5
Features OP @gainsurier 这应该算性能问题吧? 占用了大量 CPU/GPU 资源,导致发热
|
7
murmur 2022-07-21 13:45:47 +08:00
大量数据不能分页都要虚假滚动,这不是常识吗
|
10
paradoxs 2022-07-21 13:53:16 +08:00
我记得 webview 很久之前就不能用了啊
现在要用 wkwebview |
11
qrobot 2022-07-21 13:53:24 +08:00
@Features 即使你用 canvars 画 效果也是 (n * t) 的效率 n 表示多少条数据 t 表示一条数据渲染的时间. 如果你的一条数据渲染要 0.1s 一共 1000 条数据, 那么渲染的时间需要 (0.1 * 1000) = 100 秒 cpu 当然很吃紧啊,你现在用 canvars 只不过是提升了渲染时间, 以前是 0.1s 渲染, 现在变成了 0.0001 * 1000 = 0.1s 你以为解决了问题, 随着基数变大有 10w 条数据的时候 0.0001 * 100000 = 10s 问题就又出来
|
12
qrobot 2022-07-21 13:56:09 +08:00
@Features canvars 相对 dom , 没有盒模型,也没有文档流进行处理,浏览器也就不会进行复杂的 Layout 了,所以你才感觉到快了
|
13
tabris17 2022-07-21 13:56:57 +08:00
safari 里面跑热不热?
|
14
C603H6r18Q1mSP9N 2022-07-21 14:04:54 +08:00
这种大数据量 用 nvue 吧
|
16
Features OP @shanghai1998 主要这个页面有几个地方必须要用 canvas 绘制一些动画
nvue 对 canvas 支持太差了 |
17
Features OP @shanghai1998 而且 nvue 也是热,没有什么改善,我试过了
|
19
qrobot 2022-07-21 14:21:22 +08:00
@Features 渲染就需要使用 CPU/GPU 进行处理,CPU/GPU 处理的本子就是 电子进行移动, 高速的移动就会产生热量, 除非你把手机功耗降低, 这样就会降低热量了。
|
20
qrobot 2022-07-21 14:26:42 +08:00
@Features
你要想解决发热问题很简单, 把电压降低(换低压的 CPU/GPU )但是性能会变差 如果你要想解决速度问题,将电压提高(换标压的 CPU/GPU )速度就会快,但是发热会严重 这只是站在底层上来看, 但是事实是你不应该一次性处理这么多的数据,而是采用虚拟滚动的方式,只显示可视窗口的数据 |
21
mxT52CRuqR6o5 2022-07-21 14:32:57 +08:00 via Android
uiwebview 还是 wkwebview
|
22
Features OP @mxT52CRuqR6o5 uniapp 应该 wkwebview
|
23
icyalala 2022-07-21 18:09:03 +08:00
iOS 如果使用 WKWebView 性能还是没问题的,它支持 JIT 。
但小程序逻辑层运行在 JSCore 里,不是 WebView 里的,iOS 的 JSCore 禁用了 JIT ,所以性能很差。 微信也提到了这点: https://developers.weixin.qq.com/minigame/dev/guide/performance/perf-action-cpu-worker.html |
24
jones2000 2022-07-21 23:50:49 +08:00
做虚表不就可以了。 你用 uniapp 的 canvas , 还不如用 webview 的 canvas 的性能高。
|