找回密码
 立即注册

QQ登录

只需一步,快速开始

dl0537

注册会员

5

主题

27

帖子

130

积分

注册会员

积分
130

微信认证勋章

dl0537
注册会员   /  发表于:2021-4-10 21:40  /   查看:2932  /  回复:9
100金币
目前遇到的状况是这样的,在加载Spreadjs时,需要执行复制粘贴N多次,在复制粘贴区域存在比较多的计算式,加载时速度慢。
目前已经做了以下性能提升:
①在描画时进行了Spread级别以及当前sheet级别的挂起(包括描画中断,计算中断,事件中断)
(不过不太清楚描画及计算,事件这三者的中断应该遵循什么样的顺序)
②在对SpreadJs进行设定数据时,使用setArray。

但是目前加载画面时,按照客户的要求,性能方面还是有需要提升的空间。
希望各位技术大神能够分享一下关于性能提升的一些经验,先谢谢各位大神了~~

最佳答案

查看完整内容

如果是copyto就与表单绘制有关,建议您使用spread.suspendPaint()挂起绘制,绘制完成后用spread.resumePaint()。这边如果没有对应的表单或者demo,可能没有其他更好的建议了。一般情况下copyto不会造成太大的性能问题。

9 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-10 21:40:49
来自 6#
本帖最后由 DerrickJiao 于 2021-4-12 13:35 编辑
dl0537 发表于 2021-4-12 12:26
我们这边的开发环境是不能连外网的,要提供demo非常苦难...目前分析,加载时间长还和复制粘贴有关。目前 ...

如果是copyto就与表单绘制有关,建议您使用spread.suspendPaint()挂起绘制,绘制完成后用spread.resumePaint()。这边如果没有对应的表单或者demo,可能没有其他更好的建议了。一般情况下copyto不会造成太大的性能问题。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-12 09:16:48
2#
您好,推测您文档的加载慢可能是存在大量公式有关,您可以参考这篇技术文章
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D5

另外,v14新增增量加载这个特性,您也可以了解一下
https://demo.grapecity.com.cn/sp ... ntal-loading/purejs
回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-4-12 10:11:54
3#
DerrickJiao 发表于 2021-4-12 09:16
您好,推测您文档的加载慢可能是存在大量公式有关,您可以参考这篇技术文章
https://gcdn.grapecity.com.c ...

谢谢你的帮助~我们这边现在用的是v13。按照那篇技术文档所说,我设定了donot recalculateAferload=true;和calcOn demand=true,测了时间没有提升。当设置了ignoreformura =true后,加载快了将近两秒,算是达到了要求(客户要求在七秒左右)但是计算式并没有被加载上,那还需要手动把计算式再赋值一遍吗
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-12 10:16:34
4#
dl0537 发表于 2021-4-12 10:11
谢谢你的帮助~我们这边现在用的是v13。按照那篇技术文档所说,我设定了donot recalculateAferload=true ...

理论上设置了doNotRecalculateAfterLoad和calcOnDemand在加载速度上会有提升,建议您提供一份能复现问题的demo或者表单,这边看下还有没有优化空间。
回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-4-12 12:26:28
5#
DerrickJiao 发表于 2021-4-12 10:16
理论上设置了doNotRecalculateAfterLoad和calcOnDemand在加载速度上会有提升,建议您提供一份能复现问题 ...

我们这边的开发环境是不能连外网的,要提供demo非常苦难...目前分析,加载时间长还和复制粘贴有关。目前用到的方法是sheet的copyto。在复制粘贴方面有没有可以优化的思路?
回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-4-12 13:47:59
7#
DerrickJiao 发表于 2021-4-12 13:33
如果是copyto就与表单绘制有关,建议您使用spread.suspendPaint()挂起绘制,绘制完成后用spread.resumePa ...

好的,非常感谢。
刚才提到“描画挂起”,目前这边在加载时,用了描画挂起,事件挂起,计算挂起。不知道这几个挂起之间有没有什么先后顺序。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-12 14:06:47
8#
dl0537 发表于 2021-4-12 13:47
好的,非常感谢。
刚才提到“描画挂起”,目前这边在加载时,用了描画挂起,事件挂起,计算挂起。不知道 ...

不用客气的。

这几个挂起之间没有必然的先后顺序,您根据您的需求使用即可。
回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-4-19 21:10:34
9#
DerrickJiao 发表于 2021-4-12 14:06
不用客气的。

这几个挂起之间没有必然的先后顺序,您根据您的需求使用即可。

目前我这边的做法是把复制源区域的style、value、formula依次注入到复制目标对象区域来模拟复制粘贴的方法,效果还算理想。再次感谢你提供的帮助
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-20 08:38:38
10#
dl0537 发表于 2021-4-19 21:10
目前我这边的做法是把复制源区域的style、value、formula依次注入到复制目标对象区域来模拟复制粘贴的方 ...

不用客气的,有新问题欢迎随时交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部