報表工具對比選型系列 容量及相關效能

2021-10-24 16:36:13 字數 2973 閱讀 4069

報表上的計算比較複雜,常常是記憶體計算,報表工具能支援的容量也就是個重要的技術指標。我們當然希望報表占用的記憶體盡量少,這樣同樣記憶體空間可以容納更大的報表(更多的單元格),也能支援更大的併發數量。

本文將對比報表工具的容量及相關效能,看同樣的記憶體(可用 jvm)空間下,誰能支援更多的單元格數,以及同樣規模報表的計算效能。產品還是三款:潤幹報表 v2018、finereport v10.0、smartbi v9,涉及報表資料**的均為同庫同表。

測試的用例都是最簡單的報**式,具體可參考下面的說明。

「銷售訂單明細表」,字段 48 個(對應到報表為 48 列),總資料量 13 萬條。

行式報表僅採用分頁方式且全資料集計算方式測試,錶樣如下

jvm:可用 1.6g

結合測試資料來看,潤幹的容量要比帆軟強很多,在容量許可時,效能也要好很多,說明潤幹的計算引擎更為精巧高效。

帆軟較差的原因從其他資料可以找出,240 萬個格數時,都可以算出來,但後台用時是潤幹的 4 倍多。到 480 萬個格數,後台用時已達潤幹 7 倍。所以,格數越多,帆軟後台計算也越來越低效。

對於 smartbi,其清單報表只能走資料來源分頁機制,每次按照報表設定的分頁行數來取,且清單類報表每頁最大只允許 2000 行,不支援全資料集的報表,該用例就無法做同等條件下的對比了。

我們也測試了 smartbi 分頁下的情況: 240 萬個格數時,總用時 22s,後台 20s;600 萬格數,總用時 56s,後台 53.5s;可以看出來效能較差,比潤幹全資料集計算還要慢很多,只是採用分頁機制後也不會發生溢位了。

帶資料集的測試報表,採用資料庫「產品銷售表」,表資料

每個訂單(共 50 個訂單)均有 15 種不同產品,每種產品有對應銷售金額。

交叉表採用分頁和不分頁兩種形式測試,錶樣如下:

jvm:可用 1.6g。

不分頁報表

首先,用沒有資料來源的報表測試來做對比,該結果單純看有限空間內能容納多少個單元格數。

報表不分頁(或一頁)情況:

其中,後台時間內加號(+)左右兩邊資料分別為「報表計算用時」和「生成 html 用時」。不分頁時,帆軟和 smartbi 後台不再輸出生成 html 用時,所以沒有區分。

注:從潤幹的測試結果看,單頁再多的單元格(240 萬瀏覽器已無法載入)這裡就不測了,即便能算出來但瀏覽器無法載入,沒啥意義。

從交叉表可以看出,smartbi 只能容納小幾十萬的單元格數,再多的情況僅看到後台算完報表,但頁面已經無法渲染(偶爾能渲染出,但時間要 5 分多鐘,且頁面無法操作)。

帆軟可容納大幾十萬格數,百萬左右就不行了。而潤幹在 240 萬時後台計算依然正常且速度很快,表現依然優秀。

然後,用帶有資料集的報表測試,乙個小規模(750 格數,50 行 *15 列,資料只有 750 條)的交叉報表,後面我們把結果擴大到相應大的規模對比。

其中,擴大規模的製作模型如下(以擴大到 30 萬格數為例

即,在常規交叉報表基礎上,行(a3)列(c1)各加一層,使橫縱向重複多遍,如上行數擴大 10 倍至 500 行,列擴大 40 倍到 600 列,總格數達 30 萬個。

測試資料如下:

對比有和沒有資料集的報表測試資料,結論也是一致的,潤幹最好,帆軟計算和渲染強於 smartbi,也再次印證了前面文章對比渲染能力的結論。

分頁報表

再結合報表分頁時,看下對比資料,採用上面帶資料集的報表。帆軟和 smartbi 到 120 萬格數時倒在生成 html 或頁面渲染環節的,如果分頁的話,則會根據前端請求,分頁生成 html 後頁面渲染,而一般的頁都不大,就不會再在這個環節發生溢位。這樣可以測試出報表計算過程中的容量 **:**

結合上面測試情況,分頁時我們直接從 120 萬格數(每頁 100 行 *600 列,共 20 頁)測起。smartbi 交叉報表不支援指定行數分頁,結合文件及諮詢客服後採用「行分頁」+excel 頁面設定中根據紙張縮放比例實現大概每頁 100 行資料分頁。

從測試結果上看,潤幹的容量仍然是比帆軟和 smartbi 都要強很多,在容量許可時,效能還是最優。另外,帆軟在計算效率和容量兩項上均優於 smartbi。

總的來看,潤幹報表在報表計算和容量上也占有明顯的優勢,速度快且占用記憶體小,說明潤幹的報表引擎更為精巧高效,能夠支援大規模的報表或併發數量;帆軟能力居中,計算速度要慢一些且較大規模格數無法支援,但常規或稍大規模的報表或併發數量都還可以撐得住;smartbi 在計算和容量方面都明顯差很多(測試過程中還會發現功能也差,但不是本次測試點),稍大的**或較多的併發時就會難以勝任了。

報表工具對比選型系列 – 頁面渲染效能

報表工具對比選型系列 容量及相關效能

報表上的計算比較複雜,常常是記憶體計算,報表工具能支援的容量也就是個重要的技術指標。我們當然希望報表占用的記憶體盡量少,這樣同樣記憶體空間可以容納更大的報表 更多的單元格 也能支援更大的併發數量。本文將對比報表工具的容量及相關效能,看同樣的記憶體 可用 jvm 空間下,誰能支援更多的單元格數,以及同...

報表工具選型對比系列 大報表

有些報表查詢出的資料行數可達千萬甚至上億,這類報表通常被叫做大報表,大多數情況下都是些清單明細資料包表,也有少量分組報表。針對大報表,如果像常規報表一樣,將資料一次性全取再交給前端呈現是不可行的。一是等待時間太長,使用者體驗差 二是很可能導致記憶體溢位造成應用崩潰。首先了解下各家的解決方式或機制。帆...

報表工具選型對比系列 大報表

有些報表查詢出的資料行數可達千萬甚至上億,這類報表通常被叫做大報表,大多數情況下都是些清單明細資料包表,也有少量分組報表。針對大報表,如果像常規報表一樣,將資料一次性全取再交給前端呈現是不可行的。一是等待時間太長,使用者體驗差 二是很可能導致記憶體溢位造成應用崩潰。首先了解下各家的解決方式或機制。帆...