找回密码
 立即注册

QQ登录

只需一步,快速开始

LL_L

注册会员

1

主题

3

帖子

14

积分

注册会员

积分
14
  • 54

    金币

  • 1

    主题

  • 3

    帖子

最新发帖
LL_L
注册会员   /  发表于:2024-11-4 17:24  /   查看:192  /  回复:5
2金币
本帖最后由 LL_L 于 2024-11-4 17:26 编辑

Row=20000 * col=100的数据量,使用sortRange大概要花近30s的时间。请问是我的写法有问题吗?是否有办法提高性能部分代码: image.png82268065.png image.png221517028.png

最佳答案

查看完整内容

您好!您可以尝试在RangSorting和RangeSorted事件中通过Worksheet:suspendDirty()和Worksheet:resumeDirty()提升性能,如下代码所示: 可以参考官方文档了解suspendDirty和resumeDirty对性能提升的作用: https://developer.mescius.com/sp ... DirtyandresumeDirty

5 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-11-4 17:24:44
来自 2#
您好!您可以尝试在RangSorting和RangeSorted事件中通过Worksheet:suspendDirty()和Worksheet:resumeDirty()提升性能,如下代码所示:
  1.   spread.bind(GC.Spread.Sheets.Events.RangeSorting, function (sneder, args) {
  2.     sheet.suspendDirty();
  3.   });
  4.   spread.bind(GC.Spread.Sheets.Events.RangeSorted, function (sender, args) {
  5.     sheet.resumeDirty();
  6.   });
复制代码

可以参考官方文档了解suspendDirty和resumeDirty对性能提升的作用:
https://developer.mescius.com/sp ... DirtyandresumeDirty
回复 使用道具 举报
LL_L
注册会员   /  发表于:2024-11-5 12:03:32
3#
Wilson.Zhang 发表于 2024-11-5 09:59
您好!您可以尝试在RangSorting和RangeSorted事件中通过Worksheet:suspendDirty()和Worksheet:resumeDirty( ...

感谢回答!

试验结果是:对rowFilter中的升序降序的时间有改善,但是对自己写的button点击事件无效。
button点击事件中使用的是sortRange,好像并没有触发RangeSorted。
请问sortRange是不会触发RangeSorted吗?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-5 16:28:04
4#
LL_L 发表于 2024-11-5 12:03
感谢回答!

试验结果是:对rowFilter中的升序降序的时间有改善,但是对自己写的button点击事件无效。
...

请参考如下代码测试下:
  1. sheet.suspendDirty();
  2. //  排序
  3. sheet.sortRange(0, 0, sheet.getRowCount(), sheet.getColumnCount(), true, sortInfo);
  4. sheet.resumeDirty();
复制代码
回复 使用道具 举报
LL_L
注册会员   /  发表于:2024-11-6 12:00:18
5#
Wilson.Zhang 发表于 2024-11-5 16:28
请参考如下代码测试下:

感谢回答!
时间从近30s减少至不到3s。问题已解决。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-6 15:51:09
6#
LL_L 发表于 2024-11-6 12:00
感谢回答!
时间从近30s减少至不到3s。问题已解决。

不客气,恭喜解决掉一个棘手的性能优化问题。问题即已解决,那就结帖了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部