出于兴趣,我写了一个小测试台来演示这个可能的性能问题,并使用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个字段

 

原文https://stackoom.com/question/1oxgA/%E5%8F%AF%E4%BB%A5%E7%BC%93%E5%AD%98%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%E7%9A%84Delphi-XE%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BB%84%E4%BB%B6