找回密码
 立即注册

QQ登录

只需一步,快速开始

Aria
金牌服务用户   /  发表于:2024-12-9 18:30:57
11#
这个问题应该是性能边界的问题,对于11000列的模板,gcexcel能否计算到结果规模后,给出报错提示,而不是直接去渲染很久?
回复 使用道具 举报
Aria
金牌服务用户   /  发表于:2024-12-9 18:33:52
12#
用户模板写错了,导致结果excel画幅很大,这一类问题,是否一些检测机制或预防手段?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-12-10 11:01:07
13#
了解了,这边调研一下看看是否有相关的机制可以进行检测和预防。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-12-11 08:57:39
14#
您好,可以尝试使用CancellationToken来取消ProcessTemplate,具体请参考:https://demo.grapecity.com.cn/do ... processcancellation
回复 使用道具 举报
Aria
金牌服务用户   /  发表于:2024-12-11 09:48:29
15#
好的,我们已使用取消机制。
取消机制是事后手段。用户依然会有疑问,为什么我的模版运行不出来。还需要看看取消原因是否能具体提示出来?让用户知晓应该去修改模版。
另外,能否增加一些事前/事中的校验规则,避免用户使用这种模版进行渲染?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-12-11 10:23:54
16#
您好,理论上来说模板上的错误是业务上的,GcExcel目前只能判断出语法上的问题,无法也没有校验规则能够判断模板业务上的问题。

您这边关于事前/事中的校验规则有什么好的想法吗?
回复 使用道具 举报
Aria
金牌服务用户   /  发表于:2024-12-11 10:49:16
17#
站在用户视角,他会想知道怎样写是正确的,错误在哪里。在模版上没有明确禁止的,就无法约束用户不这样写。

做事前校验的一个思路,可能是在解析完数据、解析完模版之后,在渲染之前,先去预算一下结果的规模,像提到的会有11000列这种边界,就直接提示用户去修改指定的单元格。

1、事前:性能边界都有哪些场景?会有性能问题模版怎么判定?
2、事后:如何找出性能问题的原因,如何快速给出修改建议?

是我们目前比较困惑的问题
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-12-11 13:58:59
18#
我们研究一下“预算规模”这个方向,看能否设置一个阈值来进行限制。
回复 使用道具 举报
Aria
金牌服务用户   /  发表于:2024-12-11 15:29:52
19#

回复 使用道具 举报
JoeJin
超级版主   /  发表于:2024-12-11 15:57:49
20#
Aria 发表于 2024-12-11 10:49
站在用户视角,他会想知道怎样写是正确的,错误在哪里。在模版上没有明确禁止的,就无法约束用户不这样写。 ...

能理解业务场景,但是对于 GcExcel 来说,非常抱歉,数据预算规模这个事情是做不到的。

1. 我们扩展的过程也是一层一层的,并不是先把数据全部算好,然后才去填充,这就意味着没办法一开始就估算出所有的数据规模。

2. GcExcel 在业务系统中,主要是作为工具的角色,性能的边界取决于硬件和业务系统的功能。因此我们只能是尽可能优化逻辑和算法,让 GcExcel 在有限的资源下,尽可能快的完成任务。

同时,站在你们的角度思考:
1. 可以理解最终用户的诉求,对于你们的系统,当前暴露了一整套模板语言给客户,这就很类似 SQL 或者编程语言。因此用户在使用时应该知道自己在做什么,例如本帖子中的问题,如同是 SQL 中多个表进行 join,编程里嵌套多个循环,导致数据的运算量成指数级增长而产生的问题,SQL Client 和 IDE 也只能是在完成任务后才给出执行结果或者错误。因此最终用户要做的是学习清楚模板语言的语法,明白自己在做什么,避免做出导致非预期的模板。

2. 当然,我们也没法要求每个用户都能做到上一条里说的内容,所以我们可以借鉴 SQL 或者 IDE 的思路。例如除了在系统里制作超时监控,也可以基于 CancellationToken 的功能,给最终用户提供主动取消的能力。帮助用户在发现模板没有如同预期的时候,能及时停止来避免对服务器资源的浪费。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部