你願意花多少錢,爲 20 秒的業務優化買單?

將來的十年是產業互聯網的時代,產業互聯網的特色是數字化、線上化、效率化。這意味着各行各業急需數字化轉型和效率轉型。而在這場轉型過程當中,企業 OA 系統扮演着相當重要的角色。前端

對企業而言,OA 系統不只提升了企業的組織管理水平及辦公效率,更實現了提升決策效能的目的,使企業競爭力獲得提高。可是,隨着 OA 系統功能模塊愈來愈齊全,愈來愈臃腫,也讓這一效率平臺逐漸「失效」。java

1、OA 系統的核心,是業務管理中的效能問題

OA 系統的管理最終還須要迴歸至業務管理的道路上來,畢竟業務纔是企業的運做根本。OA 系統中常見的業務管理包括哪些呢?好比財務報表的製做,憑證的生成;採購部的供貨商的管理,採購單據的輸入與保管;業務部的合同管理,客戶維護等等。這些大部分都是在表格的形式中完成分析與決策的,須要要求 OA 系統將數據無缺的保存與共享,並與其餘系統進行數據整合。segmentfault

但目前企業 OA 系統中的表格功能,大部分都肩負着很是複雜的業務需求。不只須要具有着傳統 Excel 中的大部分核心功能,包括函數計算、條件格式、圖表等等;還須要支持高效的多人協同編輯以及龐大的數據處理需求。後端

數據量以及表格功能的逐漸增長,隨之而來的就是計算速度的下降。這不只會影響工做效率,打斷思路的連貫性,也會增長員工或者用戶的出錯率和對工做的厭煩程度(尤爲時在處理重複任務時)。 瀏覽器

此外,內存佔用的問題,也是 OA 系統中一項很是重要但容易被人忽略的性能指標,若是技術選型時未考慮內存佔用問題,每每會出現一個 3M 的文件消耗 100 多兆內存空間的狀況。若是同時進行包含大數據量的 Excel 讀操做,很容易形成內存溢出問題。傳統企業的技術決策層廣泛都會忽視「內存的價值」,可是:緩存

  • 一旦訪問量大,內存就會瞬間上漲,致使頻繁 GC,致使性能降低;
  • 內存高也會致使服務器分頁,這時性能就會急劇降低;
  • 吞吐量降低會致使隊列排滿,服務器會報 503 等錯誤。

因此除非企業真的有充足的預算去升級服務器,否則真的不能忽略內存的優化。這兩個問題的背後,也引出了咱們今天討論的重點 —— 如何提升 OA 系統表格模塊的數據處理性能 & 表格數據處理產品的技術選型。服務器

2、你願意投入多少成本,爲 20 秒的業務優化買單?

大部分企業在項目的平常開發中遇到表格數據處理需求時,每每會在業務代碼中直接引入如 Apache POI 這類的技術解決方案。負載均衡

Apache POI 做爲一款很是強大的 Office 軟件操做包,是 Apache 軟件基金會用 Java 編寫的免費開源的跨平臺 Java API,提供了對 Microsoft Office 格式文件的讀寫功能,在項目中的應用很是普遍,做爲一款開源軟件,爲開發者提供了極大的便利。函數

然而,即使 POI 很強大,但仍存在一些不可忽視的問題。首先是代碼相對比較繁瑣,而且當 Excel 的數據量很是大的時候,POI 的操做邏輯是將整個 Excel 的內容所有讀出來放入到內存中,這就致使內存消耗很是嚴重,一個 3M 的文件甚至須要消耗 100 多兆的內存空間。若是同時進行包含大數據量的 Excel 讀操做,很容易形成內存溢出問題。工具

除了耗內存之外,還有版本兼容性不夠等缺點,在進行版本升級的過程當中,須要對之前的代碼進行修改,或者對 jar 包進行版本隔離,這些都對項目帶來了不少潛藏的風險。

爲了幫助有相關需求的企業人員進行技術選型,提供一些更直觀的數據對比,咱們爲你們進行了一次對比測試,下圖是測試的相關結果:

葡萄城 x GcExcel

從測試數據來看,葡萄城提供的服務端高性能表格組件 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 秒的業務優化買單?

3、無需依賴 Office 和 POI,讓表格數據處理性能飆升

爲了這短短的 20 秒,葡萄城嘗試了大量的優化實踐,如減小垃圾回收、共享存儲、利用高速緩存、使用基於集合的操做運算、利用 SIMD 計算數據等,基於這些實踐推出的表格組件 SpreadJS 和 GcExcel 已經幫助許多企業減小了項目研發成本,實現了更高的處理性能。

以 GcExcel 爲例,其在服務端實現批量導入導出電子表格數據,有效規避了前端瀏覽器的內存限制,配合 SpreadJS 使用,可以讓系統達到真正的先後端負載均衡,幫助開發者輕鬆應對 OA 系統開發時常常會面臨的在線文檔先後端數據同步、批量導出與打印,以及報表模板高性能處理等業務場景須要。

其實,表格技術及其衍生工具的概念並不新穎,但隨着企業對於系統處理性能和易用性的要求逐步加深,在近幾年愈發受到開發人員和技術決策者的關注,葡萄城做爲深耕表格技術領域的探索者,其推出的多款表格組件已成爲表格技術領域的「必備解決方案」,幫助企業用極低的成本達到「降本增效」的目的。

結語:

在數字化轉型的浪潮下,大部分企業的業務運轉中表格應用場景已經十分普遍,隨着業務的發展,本地文檔管理或者傳統開源免費的 POI,已經沒法知足用戶對於表格產品的性能和系統兼容度的需求,這也迫使表格產品不斷的優化迭代,優勝劣汰。誰能找到最契合自身業務發展的技術選型或產品,誰便更有可能找到更多的發展契機。

擴展閱讀:

葡萄城前端表格控件 SpreadJS
葡萄城服務端表格組件 GcExcel
類 Excel 全棧解決方案

segmentfault 思否

相關文章
相關標籤/搜索