渲染十万乃至百万级别的点覆盖物性能问题

0 投票

使用产品:iclient

操作系统:win7 x64
问题详细描述:在处理一些海量数据时,往往数据是十万级别以上,甚至于百万级别。当渲染这个级别数据时,给用户表现的是卡顿,渲染时间长,当页面重绘时,UI被阻塞,体验非常不友好,关于这个问题是否可以考虑优化一下呢?或者提供一些方案?

截图:

3月 2, 2017 分类:  975次浏览 | 用户: 匿名

1个回答

0 投票
你好,目前来说GraphicLayer是性能最高的渲染方法了。

页面UI阻塞的时候能否做一个半透明的遮罩div加上loading的图片或文字来提醒用户呢?
3月 2, 2017 用户: 袁子翔 (5 分)
不行的,js主线程被占用,所有的UI层全都会被阻塞,此时页面上都是处于假死状态。
执行的时候先添加loading的div,再进行渲染,渲染完成后再隐藏div。

这个div把整个页面都遮住,不让用户操作。
这个方案不友好,如果这样做,由于渲染时间很长,就会导致每重绘一次,这个div都会停留这么长时间。你可以试一下渲染10W的数据,就会感受的到。

我发现了一个问题,你用的浏览器是什么呢?机器配置具体是什么?

我在示例程序上渲染十万点只需要一秒。

Chrome:56.0.2924.87 (64-bit)

我是开启开发者模式看的,正常模式需要1-2S,这个时间也是很难接受的,更何况才10W,用户只要变换地图,就会重绘,就会卡1-2S,很难受smiley

前端渲染矢量数据性能再高,也是有限制的啊。百万级的数据要用前端渲染,现在几乎到了极限了。

我们现在还在优化前端渲染的性能,能在现在的基础上速度提高两三倍。但是渲染百万个点也要几秒钟。这段时间内UI一定会阻塞的,没有什么更好的办法了。

好的,十分谢谢。

顺便提个建议,对于百万级别的数据,是否可以在下个版本中融入

  • 抽晰算法(不知道目前版本的有没有)
  • 只渲染可视区域
  • 采用webgl硬件加速
  • webworker计算
最后,祝愿超图越来越好。
谢谢您的建议!

现在已经是只渲染可视区域了,放大地图之后可以看到明显速度提升很多。

webgl和webworker应该会在iClient9中实现。

抽稀算法不好说,因为这个是有的客户能接受,有的客户不能接受。

感谢您对超图的支持。
...