TQPagedList 不同分页尺寸的性能对比

为了更好的了解 TQPagedList 在不同页面尺寸下的性能,为其设置一个最佳的默认值,特做此测试。测试样本为10万条记录,统计不同操作的用时,得到结果如下表所示:
QPageListPerfGrid

 

我们为了更直观的观察,做成柱状图以便对比,由于追加测试性能基本上没变化,我们就没有做该类型测试的图表:

QPageListPerfGraph

我们根据上面的图表,进行下简单的总结:

1、我们可以看到,随着页尺寸的增加,插入首个位置测试时,由于内存块移动造成的开销也越来越大,而随机插入和插入排序则在页尺寸为 512 时,达到一个最佳。而删除操作,则在随着页尺寸的增加,开销也在增加,而且随着页尺寸的增加,增幅越来越大。随机访问则随着页面尺寸基本线性下降。

2、根据上面的测试结果,TQPagedList 默认的页面大小决定采用512。但在实际的使用环境中,请根据自己的需求自行决定分页的尺寸。

附:页尺寸为 512 时,TQPagedList 与 TList 及 TQRBTree 性能实测数据

【注】下面数据是更新后的版本,上面图表是更新前的,优化了随机访问性能,由此带来的性能变化对比:

插入首个位置:17.1 -> 16.6(+3%)

随机插入:24.7->21.9(+11%)

排序插入:158.4->156.6(+1%)

删除首个元素:20.1->20.5(-2%)

随机删除:20.8->20.9(-0.5%)

随机访问:11.5->5.3(+53%)):

开始测试(页大小512)……
测试结果为操作完成用时,每10000条统计一次用时,单位为毫秒

 插入初始位置测试
  TList 总计用时 2747.5 ms :
    27.1	79.3	131.7	184.8	237.4	291.2	346.2	414.6	488.1	547.1	
  TQPagedList 总计用时 16.6 ms :
    1.7	1.6	1.7	1.6	1.7	1.6	1.7	1.7	1.6	1.7	
 插入初始位置测试完成:
    TQPagedList 用时为 1,则 TList 用时为 165.51 倍

 追加数据测试
  TList 总计用时 2.1 ms :
    0.2	0.2	0.2	0.2	0.1	0.2	0.5	0.2	0.1	0.2	
  TQPagedList 总计用时 1.8 ms :
    0.2	0.2	0.2	0.1	0.2	0.2	0.2	0.2	0.1	0.2	
 追加测试完成:
    TQPagedList 用时为 1,则 TList 用时为 1.17 倍

 随机插入测试
  TList 总计用时 1338.1 ms :
    13.8	39.9	66.1	92.4	120.0	145.6	171.2	197.2	231.8	260.1	
  TQPagedList 总计用时 21.9 ms :
    0.4	0.6	0.9	1.3	1.7	2.2	2.8	3.4	4.0	4.6	
 随机插入测试完成:
    TQPagedList 用时为 1,则 TList 用时为 61.10 倍

 即时排序插入测试
  TList 总计用时 1392.2 ms :
    15.3	41.9	68.9	95.9	121.5	147.4	177.1	203.3	237.5	283.4	
  TQPagedList 总计用时 156.6 ms :
    11.6	14.1	14.6	15.7	16.0	15.9	16.4	17.4	17.3	17.6	
  TQRBTree 总计用时 44.7 ms :
    3.0	3.7	4.1	4.4	4.4	4.6	5.1	4.9	4.9	5.5	
  即时排序插入测试完成:
    TQRBTree 用时计为 1,则 TList 用时为 31.15 倍,TQPagedList 用时为 3.50 倍

 删除首个元素测试
  TList 总计用时 2719.5 ms :
    538.0	478.2	414.2	343.6	289.6	235.9	183.1	131.8	78.6	26.5	
  TQPagedList 总计用时 20.5 ms :
    2.0	2.0	2.0	2.1	2.0	2.1	2.0	2.1	2.1	2.1	
 删除首个元素测试完成:
    TQPagedList 用时为 1,则 TList 用时为 132.66 倍

 删除随机元素测试
  TList 总计用时 1346.3 ms :
    275.3	227.8	198.5	169.7	144.0	118.6	92.8	66.3	39.8	13.5	
  TQPagedList 总计用时 20.9 ms :
    2.1	2.0	2.1	2.1	2.1	2.0	2.1	2.2	2.1	2.1	
 删除随机元素测试完成:
    TQPagedList 用时为 1,则 TList 用时为 64.42 倍

 随机访问元素测试
  TList 总计用时 0.4 ms :
  TQPagedList 总计用时 5.3 ms :
 随机访问元素测试完成:
    TQPagedList 用时为 1,则 TList 用时为 0.08 倍
测试完成。

 

分享到: