你愿意花多少錢,為 20 秒的業(yè)務(wù)優(yōu)化買單?

未來的十年是產(chǎn)業(yè)互聯(lián)網(wǎng)的時代,產(chǎn)業(yè)互聯(lián)網(wǎng)的特點(diǎn)是數(shù)字化、線上化、效率化。這意味著各行各業(yè)急需數(shù)字化轉(zhuǎn)型和效率轉(zhuǎn)型。而在這場轉(zhuǎn)型過程中,企業(yè) OA 系統(tǒng)扮演著至關(guān)重要的角色。

對企業(yè)而言,OA 系統(tǒng)不僅提高了企業(yè)的組織管理水平及辦公效率,更實(shí)現(xiàn)了提高決策效能的目的,使企業(yè)競爭力得到提升。但是,隨著 OA 系統(tǒng)功能模塊越來越齊全,越來越臃腫,也讓這一效率平臺逐漸“失效”。

  一、OA 系統(tǒng)的核心,是業(yè)務(wù)管理中的效能問題

OA 系統(tǒng)的管理最終還需要回歸至業(yè)務(wù)管理的道路上來,畢竟業(yè)務(wù)才是企業(yè)的運(yùn)作根本。OA 系統(tǒng)中常見的業(yè)務(wù)管理包括哪些呢?比如財務(wù)報表的制作,憑證的生成;采購部的供貨商的管理,采購單據(jù)的輸入與保管;業(yè)務(wù)部的合同管理,客戶維護(hù)等等。這些大部分都是在表格的形式中完成分析與決策的,需要要求 OA 系統(tǒng)將數(shù)據(jù)完好的保存與共享,并與其他系統(tǒng)進(jìn)行數(shù)據(jù)整合。

但目前企業(yè) OA 系統(tǒng)中的表格功能,大部分都肩負(fù)著非常復(fù)雜的業(yè)務(wù)需求。不僅需要具備著傳統(tǒng) Excel 中的大部分核心功能,包括函數(shù)計算、條件格式、圖表等等;還需要支持高效的多人協(xié)同編輯以及龐大的數(shù)據(jù)處理需求。

數(shù)據(jù)量以及表格功能的逐漸增加,隨之而來的就是計算速度的降低。這不僅會影響工作效率,打斷思路的連貫性,也會增加員工或者用戶的出錯率和對工作的厭煩程度(尤其時在處理重復(fù)任務(wù)時)。

此外,內(nèi)存占用的問題,也是 OA 系統(tǒng)中一項(xiàng)非常重要但容易被人忽略的性能指標(biāo),如果技術(shù)選型時未考慮內(nèi)存占用問題,往往會出現(xiàn)一個 3M 的文件消耗 100 多兆內(nèi)存空間的情況。如果同時進(jìn)行包含大數(shù)據(jù)量的 Excel 讀操作,很容易造成內(nèi)存溢出問題。傳統(tǒng)企業(yè)的技術(shù)決策層普遍都會忽視“內(nèi)存的價值”,但是:

一旦訪問量大,內(nèi)存就會瞬間上漲,導(dǎo)致頻繁 GC,導(dǎo)致性能下降;

內(nèi)存高也會導(dǎo)致服務(wù)器分頁,這時性能就會急劇下降;

吞吐量下降會導(dǎo)致隊(duì)列排滿,服務(wù)器會報 503 等錯誤。

所以除非企業(yè)真的有充足的預(yù)算去升級服務(wù)器,不然真的不能忽略內(nèi)存的優(yōu)化。這兩個問題的背后,也引出了我們今天討論的重點(diǎn) —— 如何提高 OA 系統(tǒng)表格模塊的數(shù)據(jù)處理性能 & 表格數(shù)據(jù)處理產(chǎn)品的技術(shù)選型。

二、你愿意投入多少成本,為 20 秒的業(yè)務(wù)優(yōu)化買單?

大部分企業(yè)在項(xiàng)目的日常開發(fā)中遇到表格數(shù)據(jù)處理需求時,往往會在業(yè)務(wù)代碼中直接引入如 Apache POI 這類的技術(shù)解決方案。

Apache POI 作為一款非常強(qiáng)大的 Office 軟件操作包,是 Apache 軟件基金會用 Java 編寫的免費(fèi)開源的跨平臺 Java API,提供了對 Microsoft Office 格式文件的讀寫功能,在項(xiàng)目中的應(yīng)用非常廣泛,作為一款開源軟件,為開發(fā)者提供了極大的便利。

然而,即便 POI 很強(qiáng)大,但仍存在一些不可忽視的問題。首先是代碼相對比較繁瑣,并且當(dāng) Excel 的數(shù)據(jù)量非常大的時候,POI 的操作邏輯是將整個 Excel 的內(nèi)容全部讀出來放入到內(nèi)存中,這就導(dǎo)致內(nèi)存消耗非常嚴(yán)重,一個 3M 的文件甚至需要消耗 100 多兆的內(nèi)存空間。如果同時進(jìn)行包含大數(shù)據(jù)量的 Excel 讀操作,很容易造成內(nèi)存溢出問題。

除了耗內(nèi)存以外,還有版本兼容性不夠等缺點(diǎn),在進(jìn)行版本升級的過程中,需要對以前的代碼進(jìn)行修改,或者對 jar 包進(jìn)行版本隔離,這些都對項(xiàng)目帶來了很多潛藏的風(fēng)險。

為了幫助有相關(guān)需求的企業(yè)人員進(jìn)行技術(shù)選型,提供一些更直觀的數(shù)據(jù)對比,我們?yōu)榇蠹疫M(jìn)行了一次對比測試,下圖是測試的相關(guān)結(jié)果:

你愿意花多少錢,為 20 秒的業(yè)務(wù)優(yōu)化買單?

從測試數(shù)據(jù)來看,葡萄城提供的服務(wù)端高性能表格組件 GrapeCity Documents for Excel (簡稱:GcExcel) 無論從運(yùn)行速度、功能,還是內(nèi)存消耗等方面,都要比 Apache POI 表現(xiàn)的更為優(yōu)秀,如其平均處理速度可以達(dá)到 POI 的 7 倍,而內(nèi)存消耗卻不到七分之一。

為了進(jìn)一步測試 Excel 文件的讀取性能極限,我們使用了 StopWatch 函數(shù)來監(jiān)聽 Excel 的打開時間,測試對象為一個包含 30 列、1,000,000 行、30,000,000 個單元格數(shù)據(jù)的電子表格文件。經(jīng)過測試, Excel 打開這個文件需要等待 34 秒,而用 GcExcel 打開這樣一份文件,僅需 12 秒。

這 20 秒的時間,對于用戶體驗(yàn)以及業(yè)務(wù)流轉(zhuǎn)來說,重要性不言而喻。這個測試結(jié)果也為企業(yè)選型提供了一個思路 —— 你愿意投入多少成本,來為這 20 秒的業(yè)務(wù)優(yōu)化買單?

  三、無需依賴 Office 和 POI,讓表格數(shù)據(jù)處理性能飆升

為了這短短的 20 秒,葡萄城嘗試了大量的優(yōu)化實(shí)踐,如減少垃圾回收、共享存儲、利用高速緩存、使用基于集合的操作運(yùn)算、利用 SIMD 計算數(shù)據(jù)等,基于這些實(shí)踐推出的表格組件 SpreadJS 和 GcExcel 已經(jīng)幫助許多企業(yè)減少了項(xiàng)目研發(fā)成本,實(shí)現(xiàn)了更高的處理性能。

以 GcExcel 為例,其在服務(wù)端實(shí)現(xiàn)批量導(dǎo)入導(dǎo)出電子表格數(shù)據(jù),有效規(guī)避了前端瀏覽器的內(nèi)存限制,配合 SpreadJS 使用,可讓系統(tǒng)達(dá)到真正的前后端負(fù)載均衡,幫助開發(fā)者輕松應(yīng)對 OA 系統(tǒng)開發(fā)時經(jīng)常會面臨的在線文檔前后端數(shù)據(jù)同步、批量導(dǎo)出與打印,以及報表模板高性能處理等業(yè)務(wù)場景需要。

其實(shí),表格技術(shù)及其衍生工具的概念并不新穎,但隨著企業(yè)對于系統(tǒng)處理性能和易用性的要求逐步加深,在近幾年愈發(fā)受到開發(fā)人員和技術(shù)決策者的關(guān)注,葡萄城作為深耕表格技術(shù)領(lǐng)域的探索者,其推出的多款表格組件已成為表格技術(shù)領(lǐng)域的“必備解決方案”,幫助企業(yè)用極低的成本達(dá)到“降本增效”的目的。

結(jié)語:

在數(shù)字化轉(zhuǎn)型的浪潮下,大部分企業(yè)的業(yè)務(wù)運(yùn)轉(zhuǎn)中表格應(yīng)用場景已經(jīng)十分廣泛,隨著業(yè)務(wù)的發(fā)展,本地文檔管理或者傳統(tǒng)開源免費(fèi)的 POI,已經(jīng)無法滿足用戶對于表格產(chǎn)品的性能和系統(tǒng)兼容度的需求,這也迫使表格產(chǎn)品不斷的優(yōu)化迭代,優(yōu)勝劣汰。誰能找到最契合自身業(yè)務(wù)發(fā)展的技術(shù)選型或產(chǎn)品,誰便更有可能找到更多的發(fā)展契機(jī)。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )