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

bubblegum發表於2020-09-14

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

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

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

用例一:簡單行式表

“銷售訂單明細表”,欄位 48 個(對應到報表為 48 列),總資料量 13 萬條。

imagepng

imagepng

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

imagepng

JVM:可用 1.6G

測試結果

imagepng

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

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

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

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

用例二:交叉表

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

imagepng

每個訂單(共 50 個訂單)均有 15 種不同產品,每種產品有對應銷售金額。
交叉表採用分頁和不分頁兩種形式測試,表樣如下:

imagepng

JVM:可用 1.6G。

測試結果

不分頁報表


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

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

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

imagepng

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

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

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

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

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

imagepng

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

imagepng

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

分頁報表


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

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

imagepng

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

總結

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

相關連結


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957599/viewspace-2719276/,如需轉載,請註明出處,否則將追究法律責任。

相關文章