找回密码
 立即注册

QQ登录

只需一步,快速开始

alei

金牌服务用户

3

主题

19

帖子

66

积分

金牌服务用户

积分
66
最新发帖
alei
金牌服务用户   /  发表于:2020-9-10 11:14  /   查看:9097  /  回复:29
本帖最后由 alei 于 2020-9-10 11:14 编辑

操作过程:

1. 将已有Excel生成ssjson文件
2. 前端程序加载 ssjson,并初始化spread
3. 根据当前打开的sheet去请求数据接口
4. 接口数据返回后,进行数据格式化、spread数据处理、渲染等一系列操作

问题描述:

spread数据处理这一步耗时太长,其中最耗时的是sheet.resumeCalcService操作但是数据量并不大,每个sheet不超过1000条

程序片段如下:
spread.png

具体Log如下:
sheet工艺过程-产品 start add data...
sheet工艺过程-产品 suspend cost 1 ms
sheet工艺过程-产品 addRows cost 185 ms
sheet工艺过程-产品 setArray cost 493 ms
sheet工艺过程-产品 doCopyFormula cost 4136 ms
sheet工艺过程-产品 resumeCalcService cost 146297 ms
sheet工艺过程-产品 resumeDirty cost 0 ms
sheet工艺过程-产品 resumeEvent cost 1 ms
sheet工艺过程-产品 resumePaint cost 36 ms
sheet工艺过程-产品 total cost 151149 ms
sheet溶剂使用 start add data...
sheet溶剂使用 suspend cost 1 ms
sheet溶剂使用 addRows cost 56 ms
sheet溶剂使用 setArray cost 114 ms
sheet溶剂使用 doCopyFormula cost 372 ms
sheet溶剂使用 resumeCalcService cost 69707 ms
sheet溶剂使用 resumeDirty cost 0 ms
sheet溶剂使用 resumeEvent cost 2 ms
sheet溶剂使用 resumePaint cost 184 ms
sheet溶剂使用 total cost 70437 ms

测试地址:http://excel.city.makenv.com/

期望:

请各位大牛看一下,并给一些建议如何进行优化,如有必要可以将Excel发出来




29 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-9-10 11:31:23
沙发
您好,您参考一下这篇文章
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D5

如果还没有解决您的问题,麻烦您提供能复现问题的demo
回复 使用道具 举报
alei
金牌服务用户   /  发表于:2020-9-10 15:16:43
板凳
本帖最后由 alei 于 2020-9-10 16:02 编辑
DerrickJiao 发表于 2020-9-10 11:31
您好,您参考一下这篇文章
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=74083&extra=pag ...

非常感谢,按照您给的文章做了优化,计算速度确实快了一些,但是1万条数据会消耗40秒左右,copy公式比较慢

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-9-10 16:09:53
地板
本帖最后由 DerrickJiao 于 2020-9-10 16:11 编辑

你好,这边看到主要耗时在doCopyFormula这块,请问您是怎么写的呢?调用的时候是否有挂起绘制和计算呢?
image.png157708434.png
另外,您可以把您的表单上传一下


回复 使用道具 举报
alei
金牌服务用户   /  发表于:2020-9-10 19:00:56
5#
DerrickJiao 发表于 2020-9-10 16:09
你好,这边看到主要耗时在doCopyFormula这块,请问您是怎么写的呢?调用的时候是否有挂起绘制和计算呢?

...

按照我的理解,您说的挂起绘制和计算就是sheet.suspendPaint()和sheet.suspendCalcService(),这两个都有做,在帖子中有贴代码片段。doCopyFormula代码如下:
spread1.png


另外我把表单上传一下,请见附件! 终_with_data_09.09.xlsx (835.14 KB, 下载次数: 512)
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-9-10 19:30:04
6#
alei 发表于 2020-9-10 19:00
按照我的理解,您说的挂起绘制和计算就是sheet.suspendPaint()和sheet.suspendCalcService(),这两个都有 ...

收到,问题正在处理,预计明天给您答复
回复 使用道具 举报
alei
金牌服务用户   /  发表于:2020-9-11 09:22:39
7#
本帖最后由 alei 于 2020-9-11 09:30 编辑
DerrickJiao 发表于 2020-9-10 19:30
收到,问题正在处理,预计明天给您答复

辛苦了,如有必要可以把demo代码私发给您
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-9-11 10:01:27
8#
alei 发表于 2020-9-11 09:22
辛苦了,如有必要可以把demo代码私发给您

我这边将您的表单导入在线表格编辑器耗时也是在比较合理的时间

麻烦您将能复现问题的demo发送到我的邮箱,我这边优先给您看一下

邮箱地址:
Derrick.jiao@grapecity.com
回复 使用道具 举报
alei
金牌服务用户   /  发表于:2020-9-11 10:19:57
9#
DerrickJiao 发表于 2020-9-11 10:01
我这边将您的表单导入在线表格编辑器耗时也是在比较合理的时间

麻烦您将能复现问题的demo发送到我的邮 ...

那就太好了,说明我们的代码或用法可能有问题

已经发送邮件,请查收!
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-9-11 10:31:03
10#
alei 发表于 2020-9-11 10:19
那就太好了,说明我们的代码或用法可能有问题

已经发送邮件,请查收!

邮件已收到,这边先复现看下问题在哪
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部