找回密码
 立即注册

QQ登录

只需一步,快速开始

ggone

注册会员

7

主题

22

帖子

59

积分

注册会员

积分
59
ggone
注册会员   /  发表于:2022-10-13 16:02  /   查看:2810  /  回复:10
您好 我想问一下就是在我用setArray 数据的时候 我加set三千条数据到渲染的时间是三秒而我看官网上的例子的几万条是不到一秒  请问我这如何优化呢
image.png688721618.png

10 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-13 16:22:20
沙发
您好
在之前的贴子给您提到过,可以在setArray前后加上suspendPaint/resumePaint提升渲染效率。
示例代码:
  1. sheet.suspendPaint();
  2. sheet.setArray();
  3. sheet.resumePaint();
复制代码

回复 使用道具 举报
ggone
注册会员   /  发表于:2022-10-13 16:46:40
板凳
image.png931025085.png 时间没有提高
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-10-13 17:45:21
地板
本帖最后由 Ellia.Duan 于 2022-10-13 17:49 编辑

您试着把this 去掉,使用sheet前先获取sheet对象
  1. const sheet = this.sheet     
  2. console.time()
  3.         spread.suspendPaint()
  4.         sheet.setArray(0,0, data);
  5.         spread.resumePaint()
  6.         console.timeEnd()
复制代码
在同一方法中,如果多次使用一个变量,可以使用临时变量来获取this.sheet。和这里的this.data

这边怀疑是this问题导致的,
image.png849119262.png
我这边设置三千条数据,然后 使用不到111ms,加上suspendPaint、resumePaint之后时间大大缩短。
我这边测试代码如下:
image.png426054992.png

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-13 18:01:06
5#
您整理一个可复现demo上传下,这边结合代码实际测试看看。
另,您提到的”我看官网上的例子的几万条是不到一秒“,具体是哪一个例子呢?
回复 使用道具 举报
ggone
注册会员   /  发表于:2022-10-13 18:08:36
6#
Lynn.Dou 发表于 2022-10-13 18:01
您整理一个可复现demo上传下,这边结合代码实际测试看看。
另,您提到的”我看官网上的例子的几万条是不到 ...

https://demo.grapecity.com.cn/spreadjs/BenchmarkSample/ 我在这性能显示看的 五万条数据0.3秒 另外 我刚去了this 还是不太行
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-10-14 08:55:59
7#
ggone 发表于 2022-10-13 18:08
https://demo.grapecity.com.cn/spreadjs/BenchmarkSample/ 我在这性能显示看的 五万条数据0.3秒 另外 我 ...

这边给您提出的方案 ,您这边都不可以的话,建议传一份demo上来,这样子可以快速定位问题,不用总是猜测问题了。
回复 使用道具 举报
ggone
注册会员   /  发表于:2022-10-14 10:01:36
8#
您好 这是我整理的demo 上面的同样是三千条数据 我的渲染时间要比你的多三倍

designer_V14.2.0_配置文件.zip

1.24 MB, 下载次数: 32

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-10-14 13:51:51
9#
本帖最后由 Ellia.Duan 于 2022-10-14 13:57 编辑

打开您的代码, image.png11903380.png 未经过任何修改,运行时间已经不是您题目中说的3秒了,
已经达到了优化的效果,至于您问为什么您的运行时间是我这边的3倍,是因为我是在Spread组件上运行的,您这边是在在线表格编辑器中运行的。
由于在线表格编辑器比Spread组件  不仅增加了菜单栏,还引入了更多的包,所以运行时间比Spread组件长是必然的。


这边看了下您的代码,您的代码中出现了几个可以优化的点。
1、这里为什么要设置三千列?sheet.setColumnCount(data.length);
2、可以将sheet.setRowCount(data.length); 放在suspendPaint与resumePaint间

image.png145774535.png 这样子会优化300多毫秒


至于您说的在官网中看到的示例 image.png878002319.png
其组件也是Spread组件不是在线表格编辑器组件。 将您的代码换成Spread组件,运行时间也是几十毫秒,您这边可以自己测试一下。





回复 使用道具 举报
ggone
注册会员   /  发表于:2022-10-14 14:46:36
10#
Ellia.Duan 发表于 2022-10-14 13:51
打开您的代码,未经过任何修改,运行时间已经不是您题目中说的3秒了,
已经达到了优化的效果,至于您问为 ...

您说的这个 转为spread 组件 有具体教程吗 如何转呢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部