遍歷查找性能測試報告(Map,Array,RBTree)
Posted on 2011-04-15 13:39 沙漠中的魚 閱讀(968) 評論(0) 編輯 收藏 所屬分類: Java 、Java基礎
上次只測試查詢的性能,而且都是在最優的情況下進行,沒有考慮條他情況,這次重新修改了測試用例,把整個測試的各個過程描述出來(加載,排序,查找的效率)。
場景:隨機生成5百萬條不同的記錄,而每條記錄不存在相同的情況。現在將這5百萬條記錄在不同的情況下進行測試。測試結果如下
1、5百萬條記錄,總共查詢50萬次(查詢前50萬條記錄)
數組性能測試加載花費:6.11秒
數組性能測試排序花費:18.313秒
數組性能測試查找花費:3.297秒
數組性能測試共花費:27.72秒
數組性能測試總共占:100005888 字節
RBTree性能測試加載花費:53.644秒
RBTree性能測試查找共花費:2.86秒
RBTree性能測試共花費:56.504秒
RBTREE性能測試共占用:240004864 字節
MAP性能測試加載花費:7.282秒
MAP性能測試查找花費:0.11秒
MAP性能測試共花費:7.392秒
MAP性能測試 共占用:173554048 字節
2、5百萬條記錄,總共查詢5百萬次(每條記錄查詢一次)
數組性能測試加載花費:6.078秒
數組性能測試排序花費:17.642秒
數組性能測試查找花費:33.049秒
數組性能測試共花費:56.769秒
數組性能測試總共占用 = 100005552 字節
RBTree性能測試加載花費:54.8秒
RBTree性能測試查找共花費:34.581秒
RBTree性能測試共花費:89.381秒
RBTREE性能測試共占用 = 240005024 字節
MAP性能測試加載花費:6.501秒
MAP性能測試查找花費:0.937秒
MAP性能測試共花費:7.438秒
MAP性能測試 共占用=173553888 字節
3、5百萬條記錄,總共查詢5千萬次(每條數據查詢10次)
數組性能測試加載花費:6.11秒
數組性能測試排序花費:17.861秒
數組性能測試查找花費:331.224秒
數組性能測試共花費:355.195秒
數組性能測試總共占用:99990456字節
RBTree性能測試加載花費:53.097秒
RBTree性能測試查找共花費:345.866秒
RBTree性能測試共花費:398.963秒
RBTREE性能測試共占用 = 240005248 字節
MAP性能測試加載花費:7.235秒
MAP性能測試查找花費:9.375秒
MAP性能測試共花費:16.61秒
MAP性能測試共占用:173554048字節
測試文件地址: /Files/aoneany/search2.rar
================================================================
前面的測試算法中,有一個地方偷懶(直接使用String.CompareTo方法進行比較)導致查詢效率很差,現在對其進行優化,測試后的數據為:
5百萬條記錄,總共查詢5百萬次(每條記錄查詢一次)
數組性能測試加載花費:1.016秒
數組性能測試排序花費:14.485秒
數組性能測試查找花費:0.703秒
數組性能測試共花費:16.204秒
RBTree性能測試加載花費:20.705秒
RBTree性能測試查找共花費:3.75秒
RBTree性能測試共花費:24.455秒
MAP性能測試加載花費:3.875秒
MAP性能測試查找花費:1.516秒
MAP性能測試共花費:5.391秒