能理解业务场景,但是对于 GcExcel 来说,非常抱歉,数据预算规模这个事情是做不到的。
1. 我们扩展的过程也是一层一层的,并不是先把数据全部算好,然后才去填充,这就意味着没办法一开始就估算出所有的数据规模。
2. GcExcel 在业务系统中,主要是作为工具的角色,性能的边界取决于硬件和业务系统的功能。因此我们只能是尽可能优化逻辑和算法,让 GcExcel 在有限的资源下,尽可能快的完成任务。
同时,站在你们的角度思考:
1. 可以理解最终用户的诉求,对于你们的系统,当前暴露了一整套模板语言给客户,这就很类似 SQL 或者编程语言。因此用户在使用时应该知道自己在做什么,例如本帖子中的问题,如同是 SQL 中多个表进行 join,编程里嵌套多个循环,导致数据的运算量成指数级增长而产生的问题,SQL Client 和 IDE 也只能是在完成任务后才给出执行结果或者错误。因此最终用户要做的是学习清楚模板语言的语法,明白自己在做什么,避免做出导致非预期的模板。
2. 当然,我们也没法要求每个用户都能做到上一条里说的内容,所以我们可以借鉴 SQL 或者 IDE 的思路。例如除了在系统里制作超时监控,也可以基于 CancellationToken 的功能,给最终用户提供主动取消的能力。帮助用户在发现模板没有如同预期的时候,能及时停止来避免对服务器资源的浪费。 |