沙漠中的鱼

欲上天堂,先下地狱
posts - 0, comments - 56, trackbacks - 0, articles - 119
  语源科技BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理

遍历查找性能测试报告(Map,Array,RBTree)

Posted on 2011-04-15 13:39 沙漠中的鱼 阅读(1021) 评论(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秒