找回密码
 立即注册

QQ登录

只需一步,快速开始

齐天大猫

金牌服务用户

52

主题

136

帖子

466

积分

金牌服务用户

积分
466
齐天大猫
金牌服务用户   /  发表于:2024-7-30 15:26  /   查看:1582  /  回复:18
本帖最后由 Joestar.Xu 于 2024-7-31 10:58 编辑


调研编号:SJS-25719

示例已上传至附件

代码:https://jscodemine.grapecity.com/sample/LmEG_UmnTU_Hvt6sVPP_Ng/

描述:

1、示例中59812.sjs在使用openMode=lazy时spread.open的时间变慢很多(7000毫秒左右),比59812.json还要慢,openMode=normal或incremental正常(1100毫秒左右)

2、将示例中【MTD回收明细】这个sheet页中的切片器删除后,2种类型(60304.sjs,60304.json)打开都变快了,但sjs的lazy模式还是会比normal和incremental慢


疑问:

1、sjs的lazy模式是否普遍比normal和incremental打开要快?大幅影响示例中打开慢的原因是什么?
2、为什么删除示例中指定切片器后打开变快了?(删除其他的切片器没有效果)
3、sjs模式使用spread.open方式打开如果想用增量计算,代码要怎么实现?(与示例无关)

归档.zip

1.24 MB, 阅读权限: 150, 下载次数: 2

18 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-30 17:57:28
沙发
您好,您描述的情况我了解了,这边调研一下,后续有进展我会在本贴中回复您。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-31 10:57:47
板凳
您好,关于疑问三,可以参考以下代码:

image.png193510131.png
回复 使用道具 举报
齐天大猫
金牌服务用户   /  发表于:2024-7-31 17:39:19
地板
Joestar.Xu 发表于 2024-7-31 10:57
您好,关于疑问三,可以参考以下代码:

incremental这个是增量加载还是增量计算呢?
ssjson在fromjson的options的增量加载是incrementalLoading,增量计算是incrementalCalculation,这2个功能是包含关系还是独立关系呢?
另外sjs的lazy模式是指优先渲染活动表单,非活动表单不渲染的话公式还会计算吗?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-1 09:43:11
5#
您好,

1、incremental这个是增量加载还是增量计算呢?

——————————————————

incremental是增量加载,如果要在增量加载的同时开启增量计算的话,可以参考以下代码:
  1. let sjsFile = document.getElementById("file").files[0];
  2. spread.open(
  3.   sjsFile,
  4.   function (e) {
  5.     successCallBack();
  6.   },
  7.   function (e) {
  8.     console.log(e);
  9.   },
  10.   {
  11.     openMode: GC.Spread.Sheets.OpenMode.incremental,
  12.     incrementalCalculation: true,
  13.   }
  14. );
复制代码


image.png222544249.png

2、ssjson在fromjson的options的增量加载是incrementalLoading,增量计算是incrementalCalculation,这2个功能是包含关系还是独立关系呢?

————————————————————

incrementalLoading是打开文件的模式,incrementalCalculation是公式引擎的一个功能,二者不冲突。

3、另外sjs的lazy模式是指优先渲染活动表单,非活动表单不渲染的话公式还会计算吗?

————————————————————

我这边做了一个简单的Demo,在sheet2中引用sheet1的数据,开启懒加载后导入,修改sheet1的数据,此时切换到sheet2,sheet2的数据没有发生改变,所以结论是不会。
回复 使用道具 举报
齐天大猫
金牌服务用户   /  发表于:2024-8-1 11:21:17
6#
Joestar.Xu 发表于 2024-8-1 09:43
您好,

1、incremental这个是增量加载还是增量计算呢?

对于默认打开sheet页,如果打开方式使用lazy和incremental会计算当前sheet页的所有公式吗?
我看其他帖子中对增列加载描述是:【增量加载之后,SpreadJS显示部分已加载的内容,用户此时可以对表格进行操作,但此时表单是还没加载完的,还是处于加载状态。】如果表单没加载完的话部分公式是不是就不会计算?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-1 17:46:35
7#
您好,

1、对于默认打开sheet页,如果打开方式使用lazy和incremental会计算当前sheet页的所有公式吗?

————————————————————————

我这边做了一个简单的测试,在关闭了计算引擎后,设置A1单元格的公式为Now(),然后导出这个SJS文件。

再开启懒加载和增量加载后导入这个SJS文件,此时A1单元格的公式没有计算。

但是如果开启了“导入后自动计算”,就可以计算出A1单元格的结果了。

2、如果表单没加载完的话部分公式是不是就不会计算?

————————————————————

根据目前的测试结果来看,导入后是否计算仅受“导入后自动计算”选项影响。
回复 使用道具 举报
齐天大猫
金牌服务用户   /  发表于:2024-8-6 11:29:38
8#
Joestar.Xu 发表于 2024-8-1 17:46
您好,

1、对于默认打开sheet页,如果打开方式使用lazy和incremental会计算当前sheet页的所有公式吗?

我大概了解了,感谢回复。顺便问下删除指定切片器打开变快的问题有进展了吗?有没有啥临时解决方案呢?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-6 17:33:42
9#
这个问题涉及到SpreadJS底层对于LazyMode的逻辑控制,我们目前正在调研并且已经有了初步的进展,但是无法为您提供临时的解决方案,我们会在后续的版本中优化此处的逻辑,待有进一步的进展我会在本帖中回复您。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-16 13:50:46
10#
您好,该问题已在17.1.4版本中修复,您可以升级后再测试一下。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部