SwiftUI一招讓List巨量數據刷新UI速度快100+倍

在這裏插入圖片描述



問題現象

SwiftUI中,若List中包含大量數據,當更新數據時界面會發生嚴重卡頓。

前兩張圖分別演示了在2k條數據下,未優化時需要8.29秒,而優化後只需要0.07秒,相差有118倍之多。

後兩張圖演示了在2w和10w條數據下,優化後的表現。可以看到即使數據達到10w條,更新也不會超過1秒鐘,可謂相當驚人。



問題分析

1. List數據變化時List如何刷新?

SwiftUI中使用的是“差異”比較的方式來刷新界面。

因爲SwiftUI是以狀態驅動的,所有的數據更新都會自動觸發UI的刷新。

在List內部的數據發生變化時,SwiftUI會嘗試區分數據更新之前和之後的差異,確定差異部分後,會將更改後的行移動到新的位置, 從而完成界面的刷新。

這是一

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章