Mapbox GL JS .setData() 循环性能优化
Mapbox GL JS .setData() loop performance optimization
每 50 毫秒,我从服务器接收更新,然后像这样更新我的 Mapbox GL JS 中的点数据:
map
.getSource('pointsSource')
.setData(pointsData);
当我发现我的笔记本电脑进入 turbo 模式并使用了 200% 的 CPU 时,戏剧就开始了,而我没有做的地方 .setData()
(不更新数据,只显示地图) 它使用 25%.
工作
在任何给定时间,我只更新 25 个点。考虑到它与点数无关,而是与我非常快地调用 .setData()
这一事实有关,我该如何提高性能?我这样想是因为我用 1 点或 10000 做了实验,结果是一样的 (200% CPU).
我不认为 setData
应该被如此频繁地调用。如果您不需要移动几何体(只是属性),您可以使用 setFeatureState
代替。
或者,至少要停止 window 锁定,您可以在调用 setData()
之前等待 idle
事件:
map.on('idle', () => map.setData(...));
map
.getSource('pointsSource')
.setData(pointsData);
当我发现我的笔记本电脑进入 turbo 模式并使用了 200% 的 CPU 时,戏剧就开始了,而我没有做的地方 .setData()
(不更新数据,只显示地图) 它使用 25%.
在任何给定时间,我只更新 25 个点。考虑到它与点数无关,而是与我非常快地调用 .setData()
这一事实有关,我该如何提高性能?我这样想是因为我用 1 点或 10000 做了实验,结果是一样的 (200% CPU).
我不认为 setData
应该被如此频繁地调用。如果您不需要移动几何体(只是属性),您可以使用 setFeatureState
代替。
或者,至少要停止 window 锁定,您可以在调用 setData()
之前等待 idle
事件:
map.on('idle', () => map.setData(...));