关于性能优化:你愿意花多少钱为-20-秒的业务优化买单

0次阅读

共计 2375 个字符,预计需要花费 6 分钟才能阅读完成。

将来的十年是产业互联网的时代,产业互联网的特点是数字化、线上化、效率化。这意味着各行各业急需数字化转型和效率转型。而在这场转型过程中,企业 OA 零碎扮演着至关重要的角色。

对企业而言,OA 零碎不仅进步了企业的组织管理水平及办公效率,更实现了进步决策效力的目标,使企业竞争力失去晋升。然而,随着 OA 零碎功能模块越来越齐全,越来越臃肿,也让这一效率平台逐步“生效”。

一、OA 零碎的外围,是业务管理中的效力问题

OA 零碎的治理最终还须要回归至业务管理的路线上来,毕竟业务才是企业的运作基本。OA 零碎中常见的业务管理包含哪些呢?比方财务报表的制作,凭证的生成;采购部的供货商的治理,洽购单据的输出与保存;业务部的合同治理,客户保护等等。这些大部分都是在表格的模式中实现剖析与决策的,须要要求 OA 零碎将数据完整的保留与共享,并与其余零碎进行数据整合。

但目前企业 OA 零碎中的表格性能,大部分都肩负着非常复杂的业务需要。不仅须要具备着传统 Excel 中的大部分外围性能,包含函数计算、条件格局、图表等等;还须要反对高效的多人协同编辑以及宏大的数据处理需要。

数据量以及表格性能的逐步减少,随之而来的就是计算速度的升高。这不仅会影响工作效率,打断思路的连贯性,也会减少员工或者用户的出错率和对工作的腻烦水平(尤其时在解决反复工作时)。

此外,内存占用的问题,也是 OA 零碎中一项十分重要但容易被人疏忽的性能指标,如果技术选型时未思考内存占用问题,往往会呈现一个 3M 的文件耗费 100 多兆内存空间的状况。如果同时进行蕴含大数据量的 Excel 读操作,很容易造成内存溢出问题。传统企业的技术决策层广泛都会漠视“内存的价值”,然而:

  • 一旦访问量大,内存就会霎时上涨,导致频繁 GC,导致性能降落;
  • 内存高也会导致服务器分页,这时性能就会急剧下降;
  • 吞吐量降落会导致队列排满,服务器会报 503 等谬误。

所以除非企业真的有短缺的估算去降级服务器,不然真的不能疏忽内存的优化。这两个问题的背地,也引出了咱们明天探讨的重点 —— 如何进步 OA 零碎表格模块的数据处理性能 & 表格数据处理产品的技术选型。

二、你违心投入多少老本,为 20 秒的业务优化买单?

大部分企业在我的项目的日常开发中遇到表格数据处理需要时,往往会在业务代码中间接引入如 Apache POI 这类的技术解决方案。

Apache POI 作为一款十分弱小的 Office 软件操作包,是 Apache 软件基金会用 Java 编写的收费开源的跨平台 Java API,提供了对 Microsoft Office 格式文件的读写性能,在我的项目中的利用十分宽泛,作为一款开源软件,为开发者提供了极大的便当。

然而,即使 POI 很弱小,但仍存在一些不可漠视的问题。首先是代码绝对比拟繁琐,并且当 Excel 的数据量十分大的时候,POI 的操作逻辑是将整个 Excel 的内容全副读出来放入到内存中,这就导致内存耗费十分重大,一个 3M 的文件甚至须要耗费 100 多兆的内存空间。如果同时进行蕴含大数据量的 Excel 读操作,很容易造成内存溢出问题。

除了耗内存以外,还有版本兼容性不够等毛病,在进行版本升级的过程中,须要对以前的代码进行批改,或者对 jar 包进行版本隔离,这些都对我的项目带来了很多潜藏的危险。

为了帮忙有相干需要的企业人员进行技术选型,提供一些更直观的数据比照,咱们为大家进行了一次比照测试,下图是测试的相干后果:

从测试数据来看,葡萄城提供的服务端高性能表格组件 GrapeCity Documents for Excel(简称:GcExcel)无论从运行速度、性能,还是内存耗费等方面,都要比 Apache POI 体现的更为优良,如其均匀处理速度能够达到 POI 的 7 倍,而内存耗费却不到七分之一。

为了进一步测试 Excel 文件的读取性能极限,咱们应用了 StopWatch 函数来监听 Excel 的关上工夫,测试对象为一个蕴含 30 列、1,000,000 行、30,000,000 个单元格数据的电子表格文件。通过测试,Excel 关上这个文件须要期待 34 秒,而用 GcExcel 关上这样一份文件,仅需 12 秒。

这 20 秒的工夫,对于用户体验以及业务流转来说,重要性显而易见。这个测试后果也为企业选型提供了一个思路 —— 你违心投入多少老本,来为这 20 秒的业务优化买单?

三、无需依赖 Office 和 POI,让表格数据处理性能飙升

为了这短短的 20 秒,葡萄城尝试了大量的优化实际,如缩小垃圾回收、共享存储、利用高速缓存、应用基于汇合的操作运算、利用 SIMD 计算数据等,基于这些实际推出的表格组件 SpreadJS 和 GcExcel 曾经帮忙许多企业缩小了我的项目研发老本,实现了更高的解决性能。

以 GcExcel 为例,其在服务端实现批量导入导出电子表格数据,无效躲避了前端浏览器的内存限度,配合 SpreadJS 应用,可让零碎达到真正的前后端负载平衡,帮忙开发者轻松应答 OA 零碎开发时常常会面临的在线文档前后端数据同步、批量导出与打印,以及报表模板高性能解决等业务场景须要。

其实,表格技术及其衍生工具的概念并不新鲜,但随着企业对于零碎解决性能和易用性的要求逐渐加深,在近几年愈发受到开发人员和技术决策者的关注,葡萄城作为深耕表格技术畛域的探索者,其推出的多款表格组件已成为表格技术畛域的“必备解决方案”,帮忙企业用极低的老本达到“降本增效”的目标。

结语:

在数字化转型的浪潮下,大部分企业的业务运行中表格利用场景曾经非常宽泛,随着业务的倒退,本地文档治理或者传统开源收费的 POI,曾经无奈满足用户对于表格产品的性能和零碎兼容度的需要,这也迫使表格产品一直的优化迭代,优胜劣汰。谁能找到最符合本身业务倒退的技术选型或产品,谁便更有可能找到更多的倒退契机。

扩大浏览:

葡萄城前端表格控件 SpreadJS
葡萄城服务端表格组件 GcExcel
类 Excel 全栈解决方案

正文完
 0