出于兴趣,我写了一个小测试台来演示这个可能的性能问题,并使用TAdoQuery比较它的性能,TAdoQuery从我的服务器获取CDS数据,以将自身的数据保存到本地磁盘文件或从本地磁盘文件加载数据。 我使用的代码如下所示,可以肯定的加以改进和更加严格。
广义上讲,它使用TAdoQuery从服务器表中检索一定数量的行,从本地磁盘文件中保存和加载数据,然后使用TDataSetProvider将数据传输到CDS,并保存和加载CDS数据,首先带有索引数据的PK,第二次不使用(因为我想看看CDS是否可以使用PK索引来提高CDS的LoadFromFile性能-不能)。
这是结果。 请给他们大“盐”,因为我敢肯定其他人会得到不同的结果。 我的观点是,您应该在自己的环境中并使用自己选择的数据和数据集组件自己进行调查。
结果
A B C D E F G H I
Recs 5000 140 63 93 967 0.0001934 952 15 31
Recs 10000 172 125 156 2574 0.0002574 2355 47 47
Recs 15000 250 171 219 4508 0.0003005 4477 63 62
Recs 20000 359 218 297 7082 0.0003541 7129 78 94
Recs 25000 390 327 343 9985 0.0003994 9968 94 109
Recs 30000 531 343 421 13401 0.0004467 13572 125 140
A =记录数
B =打开AdoQuery(毫秒)
C =将AdoQuery保存到文件(ms)
D =从文件加载AdoQuery(毫秒)
E =通过具有CDS上的PK索引的MSSet通过DataSetProvider将AdoQuery数据传输到CDS(ms)
F = E / A,即每条记录的传输时间
G =通过DataSetProvider将AdoQuery数据传输到CDS,而CDS上没有PK索引(ms)
H = CDS保存到磁盘文件(毫秒)
I =从磁盘文件加载CDS(ms)
顺便说一句,此数据的RecordSize为241和45个字段