QDAC.QDB 的 PostgreSQL 直连模块目前已经完成了70%左右功能的开发,所以就做了一个与其它能够连接 PostgreSQL 数据库的组件的性能对比测试,结果如下:
连接初始化的时间我没有进行统计,我们测试 QDAC、UniDAC、FireDAC 三者执行相同脚本所有的时间,以观察其相应的效率对比,为了将网络有影响降低到最低,我在本机特意安装了 PostgreSQL 9.4.1 来做测试。
【Select 测试】
从同一个数据集中取不同数量的记录(从10000条开始,每次倍增,总计有20万条记录,结果单位为ms):
条数 | QDAC | UniDAC | FireDAC |
10000 | 16 | 31 | 31 |
20000 | 32 | 62 | 47 |
40000 | 63 | 94 | 78 |
80000 | 110 | 203 | 172 |
160000 | 218 | 391 | 391 |
200000 | 313 | 500 | 625 |
从上面的结果看,随着数据量的增大,QDAC的性能优势逐渐显现,20万条记录时,性能已经与 UniDAC 和 FireDAC 拉开了距离。
【批量执行脚本测试】
由于 UniDAC 不支持直接批量执行脚本,而用 UniScript 执行脚本时,它是由自己拆分成一条条SQL送到服务器端执行,所以效率很差,在此就不与其对比。而 FireDAC 通过设置 DirectExecute 参数可以直接执行,所以对比就是 QDAC 和 FireDAC 两者之间进行,实际各插入10万条,实测对比结果如下:
- QDAC : 7031 ms
- FireDAC : 8125ms
QDAC 比 FireDAC 速度快约 13.5%。
【保存到内存流测试】
而将数据从数据库转换到文件流中,UniDAC 只支持 XML,100000 条记录测试,QDAC、UniDAC 和 FireDAC 的比较结果分别是 750、2390、625 ms,QDAC 的 Converter 暂时居中,将来通过进一步优化应该可以进一步提升。