潤乾報表與集算報表的計算效能對比測試

來源:互聯網
上載者:User

標籤:潤乾報表   集算報表   

1、測試目的

    在相同的硬體和web容器上測試潤乾報表和集算報表的效能,對比在報表中完成分組、排序、過濾、串連、排名的效能差異,以及並發情況下二者的表現。測試過程中,潤乾報表將採用報表工具內建的計算引擎,集算報表採用其內建的集算器計算引擎。


2、環境描述

測試機型:DellInspiron 3420

CPU:Intel Core [email protected] *4

RAM:4G

HDD:西數WDC(500G5400轉/分)

作業系統:Win7(X64)SP1

JDK:1.6

資料庫:oracle11gR2

Tomcat:6.0.36_x64

TomcatJVM記憶體:-Xms512m-Xmx2048m

潤乾報表版本:4.5.6

集算報表版本:5.0

3、資料描述

測試使用到三個表T1、T2、T3,下表為三表資訊,其中資料量為記錄條數。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/19/wKiom1PfNvLhdrimAABeYAl9fIo158.jpg" style="float:none;" title="jisuan_report_1.jpg" alt="wKiom1PfNvLhdrimAABeYAl9fIo158.jpg" />

T1、T2表結構相同,如下:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/19/wKioL1PfOAySwYQoAACBVEIm-LY989.jpg" style="float:none;" title="jisuan_report_2.jpg" alt="wKioL1PfOAySwYQoAACBVEIm-LY989.jpg" />

T3表結構:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/19/wKioL1PfOAyRN3SIAABXzKEk7Co067.jpg" style="float:none;" title="jisuan_report_3.jpg" alt="wKioL1PfOAyRN3SIAABXzKEk7Co067.jpg" />

4、用例描述4.1分組

使用T2表,在報表中分別按照Date2和Date欄位進行分組,進行分組匯總,取數sql:

ds1: select * from t2.

 

報表格式為:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/19/wKiom1PfNvOhHpHNAABCHTLOZ00595.jpg" style="float:none;" title="jisuan_report_4.jpg" alt="wKiom1PfNvOhHpHNAABCHTLOZ00595.jpg" />

4.1.1  潤乾報表實現

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/44/19/wKiom1PfNvSi8qoMAABnBwJnCBE925.jpg" style="float:none;" title="jisuan_report_5.jpg" alt="wKiom1PfNvSi8qoMAABnBwJnCBE925.jpg" />

4.1.2 集算報表實現

集算器指令碼

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/44/19/wKioL1PfOA6T3bNvAADRBD4nstI953.jpg" style="float:none;" title="jisuan_report_6.jpg" alt="wKioL1PfOA6T3bNvAADRBD4nstI953.jpg" />

報表範本

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/44/19/wKiom1PfNvXifjbbAAB3Po7Ppuw035.jpg" style="float:none;" title="jisuan_report_7.jpg" alt="wKiom1PfNvXifjbbAAB3Po7Ppuw035.jpg" />

4.2    排序

使用T1表,取50萬條記錄,在報表按照Date欄位進行排序,報表顯示5個欄位,取數sql:

ds1:select * from t1 where rownum<500000。

 

報表格式為:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/19/wKioL1PfOA-SFyPrAABmC_G3uw4369.jpg" style="float:none;" title="jisuan_report_8.jpg" alt="wKioL1PfOA-SFyPrAABmC_G3uw4369.jpg" />

4.2.1 潤乾報表實現

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/19/wKioL1PfOA_Dk0uhAABlnzLtDU8346.jpg" style="float:none;" title="jisuan_report_9.jpg" alt="wKioL1PfOA_Dk0uhAABlnzLtDU8346.jpg" />

4.2.2集算報表實現

集算器指令碼:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/19/wKiom1PfNvbCo4HYAACq24BdbNs265.jpg" style="float:none;" title="jisuan_report_10.jpg" alt="wKiom1PfNvbCo4HYAACq24BdbNs265.jpg" />

報表範本:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/1A/wKioL1PfORDRg8kvAABW3qax5UY155.jpg" style="float:none;" title="jisuan_report_11.jpg" alt="wKioL1PfORDRg8kvAABW3qax5UY155.jpg" />

4.3 過濾

使用T1表,在報表中按照ID欄位過濾,過濾後資料量為82條,取數sql:

ds1:select * from t1.

 

報表格式為:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/1A/wKioL1PfORHySl_VAABdiZWqg3o390.jpg" style="float:none;" title="jisuan_report_12.jpg" alt="wKioL1PfORHySl_VAABdiZWqg3o390.jpg" />

4.3.1  潤乾報表實現

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/44/19/wKiom1PfN_jBY7FLAABfXP5qXAw692.jpg" style="float:none;" title="jisuan_report_13.jpg" alt="wKiom1PfN_jBY7FLAABfXP5qXAw692.jpg" />

4.3.2 集算報表實現

集算器指令碼

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/19/wKiom1PfN_jBeAsPAACXUYC0xJk675.jpg" style="float:none;" title="jisuan_report_14.jpg" alt="wKiom1PfN_jBeAsPAACXUYC0xJk675.jpg" />

報表範本:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/1A/wKioL1PfORLBRHo1AABg3XSlcTE798.jpg" style="float:none;" title="jisuan_report_15.jpg" alt="wKioL1PfORLBRHo1AABg3XSlcTE798.jpg" />

4.4   串連

使用T2和T3表,在報表中按照T2的ID欄位與T3左串連,取數sql:

   ds1:select * from t2 where userid<267427523

   ds2:select * from t3 where userid<10485202

   ds1記錄數為:7171;ds2記錄數為:12730

報表格式為:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/19/wKiom1PfN_nQcT5TAAA-iu6PYRE106.jpg" style="float:none;" title="jisuan_report_16.jpg" alt="wKiom1PfN_nQcT5TAAA-iu6PYRE106.jpg" />

4.4.1 潤乾報表實現

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/1A/wKioL1PfORLR931RAABZNu-8a1g854.jpg" style="float:none;" title="jisuan_report_17.jpg" alt="wKioL1PfORLR931RAABZNu-8a1g854.jpg" />

4.4.2 集算報表實現

集算器指令碼:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/44/1A/wKioL1PfORPSTyn8AAESKiZHbsM133.jpg" style="float:none;" title="jisuan_report_18.jpg" alt="wKioL1PfORPSTyn8AAESKiZHbsM133.jpg" />

報表範本:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/19/wKiom1PfN_rSgu7CAABAwIs_b34408.jpg" style="float:none;" title="jisuan_report_19.jpg" alt="wKiom1PfN_rSgu7CAABAwIs_b34408.jpg" />

4.5   排名

使用T3表,在報表中根據SumTime進行排名,取數sql:

  ds1: select * from t3 whereuserid<8883948

資料集ds1記錄數為:10430。

 

報表格式為:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/1A/wKioL1PfORTjXimEAABPdpzoWco011.jpg" style="float:none;" title="jisuan_report_20.jpg" alt="wKioL1PfORTjXimEAABPdpzoWco011.jpg" />

4.5.1 潤乾報表實現

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/44/1A/wKiom1PfOZfS0sYTAACAhwwwEDg384.jpg" style="float:none;" title="jisuan_report_21.jpg" alt="wKiom1PfOZfS0sYTAACAhwwwEDg384.jpg" />

4.5.2集算報表實現

集算器指令碼:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/1B/wKioL1PfOrKRHy0wAAE6EO28oX8124.jpg" style="float:none;" title="jisuan_report_22.jpg" alt="wKioL1PfOrKRHy0wAAE6EO28oX8124.jpg" />

報表範本:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/1A/wKiom1PfOZmTVBqBAABxj0WOPFE802.jpg" style="float:none;" title="jisuan_report_23.jpg" alt="wKiom1PfOZmTVBqBAABxj0WOPFE802.jpg" />

4.6並發分組

使用5.1分組用例,進行多並發分組測試,這裡採用4個並發。

5、測試方法

使用兩個完全相同的Tomcat(JVM等完全)分別部署潤乾報表應用和集算報表應用,報表資料來源相同,潤乾報表使用sql資料集,直接取數;集算報表採用集算器資料集,取數在dfx中完成。分別比較報表中完成的分組、排序等報表效能,每個用例測試時前均重啟Tomcat,以保證無其他報表佔用記憶體等資源。

此外,由於測試機配置,不同用例使用了不同資料表,故不同用例之間縱向無可比性,主要看橫向,即:潤乾報表和集算報表的效能差異。

6、測試結果

*下表結果資料單位為:秒

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/1B/wKioL1PfOrOTfb6ZAAGKo0YN90U058.jpg" style="float:none;" title="jisuan_report_24.jpg" alt="wKioL1PfOrOTfb6ZAAGKo0YN90U058.jpg" />


【說明】

這裡的時間記錄是從SQL取數完畢後到報表計算完成,潤乾報表的日誌中會直接提供這兩個時間點,相減即得間隔時間;集算報表需要在指令碼中加debug資訊記錄取完數的時刻,再與報表日誌中的計算完報表的時間相比,得到間隔時間。 

7、解讀分析

集算報表將計算放在集算器指令碼中進行,集算器採用了更高效的Hash演算法,對於分組等有資料關聯的計算有極其顯著地提高,對於過濾排序等硬遍曆式計算則在演算法層面沒有較大提升,表現出來的少量提高主要是因為集算器中運算不帶有展現屬性造成的。

這次測試的所有運算都是單線程的,事實上,集算器還可以支援多線程並行計算以充分利用CPU的多核,還能進一步提升效能,即使在排序和過濾類的運算上也能有數倍提高。而包括潤乾報表在內的大部分報表工具目前都不支援多線程並行計算,無法利用CPU的多核提高效能。






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.