找回密码
 立即注册

QQ登录

只需一步,快速开始

Wilson.Zhang
超级版主   /  发表于:2024-10-17 15:18:01
11#
您好!请问您的问题是否已解决?如未解决,可以提供一个能够复现问题的demo,我们帮您分析一下。
回复 使用道具 举报
写BUG的程序员
金牌服务用户   /  发表于:2024-10-21 18:15:23
12#
本帖最后由 写BUG的程序员 于 2024-10-21 18:52 编辑
Wilson.Zhang 发表于 2024-10-17 15:18
您好!请问您的问题是否已解决?如未解决,可以提供一个能够复现问题的demo,我们帮您分析一下。

没有解决,从目前demo的渲染流程上,有没有优化的空间呢?


卡顿的demo如附件

demo.zip

10.93 MB, 阅读权限: 150, 下载次数: 3

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-22 09:15:06
13#
写BUG的程序员 发表于 2024-10-21 18:15
没有解决,从目前demo的渲染流程上,有没有优化的空间呢?

收到demo,我们分析下先,请您耐心等候。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-22 15:22:39
14#
您好!通过您提供的代码文件,了解到您定义的业务逻辑在不存在Table的情况下新添加Table,而在存在Table的情况下清除Table中的数据后再重新调整Table的尺寸。

以您提供的demo为例,其中的dataRange包含48930行、115列数据,清除这个规模的区域耗时约为2835ms,即2.8s,耗时合理。如下图所示。
1729581709752.png339194335.png

而且,您代码中原始定义的清除区域规模为50000行2000列,耗时约为54590ms,即55s,也是合理耗时情况。如下图所示。
1729581629987.png811444396.png

从您提供的文件中未曾发现计算公式、监听事件等,在使用上述功能时,可以通过挂起/恢复机制帮助优化性能。综上所述,针对于如此大规模的清除数据操作,耗时合理。


回复 使用道具 举报
写BUG的程序员
金牌服务用户   /  发表于:2024-10-25 14:13:20
15#
本帖最后由 写BUG的程序员 于 2024-10-25 14:23 编辑
Wilson.Zhang 发表于 2024-10-22 15:22
您好!通过您提供的代码文件,了解到您定义的业务逻辑在不存在Table的情况下新添加Table,而在存在Table的 ...

您的结论是这个操作耗时这么长是合理的?



另外我们跟踪了一下性能,在sheet.clear的时候,应该不需要这两个步骤,能否跳过这两个步骤进行Clear呢?
image.png806006164.png

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-25 17:41:52
16#
写BUG的程序员 发表于 2024-10-25 14:13
您的结论是这个操作耗时这么长是合理的?

这个处理速度是合理的,关于您所说的sheet.clear时的这两个步骤,在源码里,您要怎么跳过呢?
回复 使用道具 举报
写BUG的程序员
金牌服务用户   /  发表于:2024-10-28 10:50:31
17#
Wilson.Zhang 发表于 2024-10-25 17:41
这个处理速度是合理的,关于您所说的sheet.clear时的这两个步骤,在源码里,您要怎么跳过呢?

我想问的是,通过你们开放出来的API,能否跳过这两个步骤
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-28 12:31:38
18#
本帖最后由 Wilson.Zhang 于 2024-10-28 13:51 编辑
写BUG的程序员 发表于 2024-10-28 10:50
我想问的是,通过你们开放出来的API,能否跳过这两个步骤

我们调研后给您提供一个方案,如果您的sheet中只有Table而没有其他数据区,您试下用Worksheet:reset()代替Worksheet:clear(),在reset之后新添加Table。使用您提供的demo,我们测试的耗时约为145ms。
1730089883116.png614701232.png
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-28 13:49:41
19#
Wilson.Zhang 发表于 2024-10-28 12:31
我们调研后给您提供一个方案,如果您的sheet中只有Table而没有其他数据区,您试下用Worksheet:reset()代 ...

调研了下,使用Worksheet:reset()将抹掉对sheet的原有其他设置,比如表单保护,可以使用Worksheet:setRowCount(0)代替。Worksheet:setRowCount(0)将消除所有行,同时可以保留原有的其他sheet设置,也可以保留原来的Table,也就是依然可以保留您通过TableManager:resize()对Table调整尺寸的代码设计。使用您提供的demo测试耗时约为127ms,如下图所示。您可以自行评估下。

1730094552742.png951841430.png
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-29 15:52:57
20#
您好!请问您的问题是否得到解决?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部