TQPagedList – TList 的高性能替代品

QDAC 项目组很高兴为你发布一个全新的类:TQPagedList,它可以用来做为系统中 TList 类型的很好的替代品,接口保持和 TList 99.9 兼容,绝大部分应用只需要替换类名就可以带来很好的性能提升。

关于 TQPagedList 和 TList 的性能差异,可以参考:均衡型选手 – TQPagedList 与 TList 和 RBTree 的性能PK

相比 TList, TQPagedList 额外带来的改进包括:

  • 分页式存贮,大幅提高插入(非追加)、删除的效率;
  • 通过设置 OnCompare 或 Sort 时提供匿名比较函数或全局比较函数,快速构建有序数列;
  • Remove 支持按索引移除元素;
  • 内置 Find 方法,可以在已经排序的列表中使用二分法快速查找元素;

TQPagedList 支持 Delphi/C++ Builder 2007 +。另外,注意随机访问性能要明显弱于TList(TList 直接访问数组,几乎没有任何开销,TPagedList 需要先用二分法找到相应的页,然后直接访问数组,中间多了一步),测试实际性能 10 万条随机访问时间约在几毫秒的级别,但与0相比,一对比就成了无穷大了:)。

下面是一些性能对比图表:

insertsorted Insertrandom InsertFirst deleterandom deletefirst

分享到: