next icon indicating copy to clipboard operation
next copied to clipboard

[Select]select 性能问题

Open wwglala opened this issue 3 years ago • 6 comments
trafficstars

Component

Select

Reproduction link

Edit on CodeSandbox

Steps to reproduce

性能问题

wwglala avatar Jul 07 '22 15:07 wwglala

这个 demo 不对吧,没有 select

lakerswgq avatar Jul 11 '22 08:07 lakerswgq

这个 demo 不对吧,没有 select 抱歉之前没有保存上 ,在看下,在与field使用时会很卡,input 等当前页面都会变卡。

wwglala avatar Jul 11 '22 08:07 wwglala

我看到了,你demo里面有 40000 个选项,一定会卡的!!

bindoon avatar Jul 20 '22 11:07 bindoon

我看到了,你demo里面有 40000 个选项,一定会卡的!!

你可以看到我已经开启了虚拟滚动,即使我不去操作select,只是放到页面上,那么每次render它都会重新执行 renderMenu(是否是造成性能问题的关键),源码里 renderMenu 似乎是个全量循环的过程(这个时候是否可以先进行数据切割在遍历),业务中这种万级的数据场景非常常见 ,并且我用 antd 进行对比是很流畅的 但fusion的Field更新策略和antd是有差别的, 所以我想了解一下这种场景fusion后续会进行优化吗

}WEU(M8{LBR5RYFF`H}_~RF

US{S$LZC)1WYL`%%I2EZB3

wwglala avatar Jul 20 '22 14:07 wwglala

demo 已补充,待确认

lakerswgq avatar Sep 07 '22 06:09 lakerswgq

@wwglala 后续 fusion 在 1.x 的实现中不会优化该场景,一方面是以目前的实现改造成本较高,另一方面是大数据量带来的性能瓶颈不仅仅会表现在 render 阶段,任意涉及到遍历数据的场景都会有这个问题,即使是复杂度为 n 的遍历也会造成卡顿,改动这个点并不能有效解决问题,不如从根源入手,通过远程搜索或懒加载的方式避免这个问题,况且巨量数据吐到 web 端从交互、性能等方面考虑本身也是不可取的。

后续在 2.x 的版本中我们会考虑很多组件在大数据量下的性能表现,可能涉及较多组件,可以通过变更日志关注进展.

YSMJ1994 avatar Jan 30 '24 11:01 YSMJ1994