1. 程式人生 > 實用技巧 >報表工具對比選型系列 - 頁面渲染效能

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

頁面渲染是指報表在計算完成後,生成 html 頁面時加上各種格式外觀屬性的過程。如果在報表中添加了大量的呈現效果(隔行異色、背景圖、條件警戒色等)時,頁面渲染的速度就會受到影響變慢,但往往這些呈現效果又是必須的,所以這個時候就得看報表的效能了。

這裡對潤乾、帆軟和 smartbi 三款報表工具進行測試,業內還有永洪和億信也宣稱對複雜報表的支援較好,但經過基本模型測試就會發現這兩款產品與前述三款差距還是比較明顯(可參考後面的連結),就沒必要再做更多評測了。

測試的用例在資料計算上都比較簡單,因為主要考察渲染效能,只在樣式上增加了上面說到的幾個條件樣式,具體的可以看下面的說明。

用例一,簡單行式表

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

報表資料集 SQL:

select * from 銷售訂單統計彙總 where 訂單ID!=? order by 訂單ID 

為保證測試公平,增加引數使得每次計算資料不同,報表不走快取。

結果報表式樣:

這是潤乾報表生成結果,其他兩款產品都是同樣效果。

條件格式

1、 隔行異色 2、 折扣,折扣大於0.15(即達到85折)標紅(前景色) 3、 運貨費,分十個區間判斷,小於等於10標為綠色、>10&&<=20某色、>20&&<=30、>30&&<=40、 >40&&<=60、>60&&<=80、>80&&<=100、>100&&<=120、>120&&<=140、大於140標紅。 4、 訂單ID,根據“運貨費”判斷分十個區間,小於等於10標為綠色、>10&&<=20某色、>20&&<=30、 >30&&<=40、>40&&<=60、>60&&<=80、>80&&<=100、>100&&<=120、>120&&<=140、大於140標紅。 且 >100&&<=120 字型加粗、>120&&<=140 字型加粗、大於140字型加粗 

測試結果

“無”表示沒有設定條件格式的報表;“有”表示增加了條件格式後的報表;“無輸出”指後臺不輸出對應時間;“總用時”提從訪問報表到頁面呈現出來;

以下結果均同瀏覽器,分別為總用時、後臺報表計算、生成 html 及翻頁的 5 次平均資料。

1、 smartbi 不支援不分頁展現,所以無法測試到單頁 8600 行 *48 列的規模。按其最大 2000 行強制分頁測試:
無條件格式:從訪問到首先呈現出來是 17s,計算 + 生成 html 在 3s 左右,翻頁時間較長均在 17s 左右。
有條件格式:從訪問到首先呈現出來是 30s,計算 + 生成 html 在 6s 左右,翻頁時間較長,達到在 40s 以上。

2、帆軟當不分頁時,後臺不再輸出生成 html 的用時,標為“無輸出”了。

從用例一的測試結果看,在常規的單頁格數規模下,三款產品的頁面渲染基本一樣,且有無條件格式基本不受影響。不過可以看到帆軟的報表計算太慢了,所以頁面端表現出的感受是出表最慢。

單頁格數增大到 500*48 規模時,在報表沒有條件格式下,頁面渲染用時也基本一致,都在 3s 左右。增加條件模式後,帆軟和 smartbi 的總用時相比潤乾都有較大增加,帆軟是花在報表計算上了,頁面渲染用時沒什麼變化。但對 smartbi 頁面渲染能力已經有了較明顯影響,對比無條件格式時增加了 50% 的時間。

再次增大到 8600*48 規模(因 smartbi 不支援超過 2000 行的分頁,這個規模就不對比它了),此時帆軟和潤乾,不論總用時還是渲染能力差距更很明顯了,大家參考潤乾和帆軟的測試資料一目瞭然,潤乾均優於帆軟。

再結合翻頁來看,常規規模下,潤乾和帆軟幾乎沒什麼耗時,翻頁流暢,而 smartbi 會有個卡頓(每頁都有 1s 左右的用時)。來到 500 * 48 的規模,有無條件格式對潤乾依然沒有影響,帆軟對比自身無條件格式翻頁增加 60% 時長,但 smartbi 的有些不理解,從資料看,每翻一頁和總用時一樣(猜測:smartbi 對於清單報表是使用資料庫分頁的機制,每次都要按分頁行數取數、再計算、生成 html,然後頁面載入,這也和翻頁及總用時一致的資料看相符,但目前沒得到官方支援的回覆)。針對 smartbi 最大支援 2000 行強制分頁,前面資料表格下面也單獨做了測試,當按 2000 行 * 48 列分頁時,增加完條件格式,時間翻了近一倍,並且翻頁比呈現出首頁的時間都長了。

小結

小結一下:常規規模,潤乾最優,smartbi 次之,帆軟輸在了報表計算上,總用時太久了。500 行 * 48 列規模下,潤乾最優,帆軟次之,smartbi 翻頁太慢。特大規模下,依然潤乾最優,帆軟次之,smartbi 最差。用例一整體表現出潤乾在效能優化上全面(模型好)也最好,帆軟的計算模型不夠好,500 行 * 48 列規模,增加條件格式後增加了不少計算時間。smartbi 只適合常規頁規模的情況,大的就很難用了。

用例二,交叉表

“產品銷售情況表”,表資料如下

每一個訂單所屬一個貨主地區,每個訂單均有 60 種不同產品,每種產品有對應銷售金額。

訂單號有 847 個,交叉報表按行分組(地區、訂單編號)、列分組(產品名稱),規模為 847 行 * 62 列,均採用不分頁方式展現。

報表資料集 SQL:

select * from 產品銷售情況表 where d訂單編號!=? order by 貨主地區,訂單編號 

同樣,增加引數使得每次計算資料不同,報表均設定不走快取。

結果報表式樣:

條件格式

根據條件判斷,給三個地區(華北、東北、華東)各分配一套色系,華北紅色系,東北藍色、華東綠色,然後根據 10 類產品判斷,給予色系內不同深淺顏色的前景色。

測試結果

“無”表示沒有設定條件格式的報表;“有”表示增加條件格式後的報表;“總用時”指訪問報表到頁面呈現完;“後臺時間”指報表計算 + 生成 html 時間

以上結果均同瀏覽器,5 次平均用時。

對於交叉類的報表,潤乾的表現依然是最好的(該報表只有一頁資料,所以只是感覺上差的不太多), 另外帆軟比 smartbi 表現要好,或許是針對這類報表,帆軟的模型要優於 smartbi。

增加複雜條件格式後的資料表現與用例一一致,潤乾依然是衰減最小,帆軟衰減也很小,smartbi 的頁面渲染導致的衰減明顯要大得多,用時比潤乾和帆軟要多出好幾倍。

總結

總的來看,潤乾不論運算還是渲染的效能均是最優。帆軟和 smartbi 針對不同格式報表,不同的資料規模,有些效能差異,但整體看帆軟要優於 smartbi 的,比較均衡,相對也更穩定。smartbi 在處理頁面較大且有較多格式的報表時渲染效能較差。

相關連結

報表工具對比選型系列用例——多源分片報表

報表工具對比選型系列用例——排名及跨行組統計