ADO,ADOStream,Dbexpress与TDataSetProvider的效率
来源:互联网 发布:mac os sierra 镜像 编辑:程序博客网 时间:2024/05/11 18:10
在中间层服务器,打包DataSet的资料,客户端用DataSet接收,有两种格式:
(1)、TDataSetProvider.Data得到的格式,姑且叫做Midas格式
(2)、ADO _Stream得到的格式,姑且叫做ADOStream格式,这其中又分为ADTG格式和XML格式。
下面测试ADO和Dbexpress两种数据库引擎,在生成不同的格式时的效率。
测试代码为:
function ADOReadData(ADataSet:TCustomADODataSet;AFormat:TPersistFormat=pfADTG):Variant;var vStream:_Stream; vFilter:Variant;begin vStream:=CoStream.Create; vFilter:=ADataSet.Recordset.Filter; try //先去掉Filter ADataSet.Recordset.Filter:=''; if AFormat=pfADTG then begin vStream.type_:=adTypeBinary; ADODB_TLB._Recordset(ADataSet.Recordset).Save(vStream,adPersistADTG); vStream.Position:=0; Result:=vStream.Read(vStream.Size); end else begin vStream.type_:=adTypeText; OLEVariant(ADataSet.Recordset).Save(vStream,adPersistXML); vStream.Position:=0; Result:=vStream.ReadText(vStream.Size); end; finally vStream:=nil; ADataSet.Recordset.Filter:=vFilter; end;end;
procedure TForm4.Button1Click(Sender: TObject);const CNST_RepeatTimes=10;var i:integer; A:TDateTime; vData:Variant;begin //无图片 //SQLDataSet1.CommandText:='select * from csSystemLogs'; //ADODataSet1.CommandText:='select * from csSystemLogs'; //有图片 SQLDataSet1.CommandText:='select * from csMachines'; ADODataSet1.CommandText:='select * from csMachines'; A:=Now; for i := 1 to CNST_RepeatTimes do begin SQLConnection1.Open; SQLDataSet1.Open; vData:=DataSetProvider1.Data; SQLDataSet1.Close; SQLConnection1.Close; end; Edit1.Text:=FloatToStr(Round((Now-A)*86400000)); Edit1_1.Text:=InttoStr(VarArrayHighBound(vData,1)); A:=Now; for i := 1 to CNST_RepeatTimes do begin ADOConnection1.Open; ADODataSet1.Open; vData:=DataSetProvider2.Data; ADODataSet1.Close; ADOConnection1.Close; end; Edit2.Text:=FloatToStr(Round((Now-A)*86400000)); Edit2_1.Text:=InttoStr(VarArrayHighBound(vData,1)); A:=Now; for i := 1 to CNST_RepeatTimes do begin ADOConnection1.Open; ADODataSet1.Open; vData:=ADOReadData(ADODataSet1,pfADTG); ADODataSet1.Close; ADOConnection1.Close; end; Edit3.Text:=FloatToStr(Round((Now-A)*86400000)); Edit3_1.Text:=InttoStr(VarArrayHighBound(vData,1)); A:=Now; for i := 1 to CNST_RepeatTimes do begin ADOConnection1.Open; ADODataSet1.Open; vData:=ADOReadData(ADODataSet1,pfXML); ADODataSet1.Close; ADOConnection1.Close; end; Edit4.Text:=FloatToStr(Round((Now-A)*86400000)); Edit4_1.Text:=InttoStr(Length(WideString(vData))*2);end;
测试结果:
1、资料表中有Image字段,连续打包10次。
序号Midas DbexpressMidas ADOADO Stream ADTGADO Stream XML打包时间(毫秒):14686105941086722484469578108985346845454610902344844545621094345485453562109828返回资料大小(字节): 26032672603112260399811186048速度最快的是“Midas ADO”,资料最小的也是“Midas ADO”。“ADO Stream XML”效率差241倍,资料大小差4倍。
2、资料表中没有Image字段,连续打包10次。
序号Midas DbexpressMidas ADOADO Stream ADTGADO Stream XML打包时间(毫秒):14695622504692375562219516337554723450043915472345005375562219500返回资料大小(字节): 177732156805182433534026速度最快的是"ADO Stream ADTG",资料最小的是“Midas ADO”。- ADO,ADOStream,Dbexpress与TDataSetProvider的效率
- Delphi TDataSetProvider的Option属性
- 优化ADO的执行效率
- ClientDataSet加上TDataSetProvider的数据保存问题
- ClientDataSet加上TDataSetProvider的数据保存问题
- clientDataSet和TDataSetProvider对数据的操作
- ClientDataSet加上TDataSetProvider的数据保存问题
- Delphi中ADO存取效率的探讨
- Delphi7的dbExpress驱动问题
- delphi开发学习四:TClientDataSet与TDataSetProvider控件使用实例
- 请教关于C++builder 6.0 中TDataSetProvider的ApplyUpdates方法
- ADO与ADO.NET的一点比较
- ADO与ADO.NET的区别
- ADO与ADO.NET的区别
- ADO.NET与ADO的基本比较
- ADO与ADO.NET的区别
- ADO与ADO.NET的区别
- ADO与ADO.NET 的区别
- Mingw32的说明
- 二进制转换成十进制算法演示
- Tomcat去除端口号和项目名
- ibatis2.3.4应用的几个问题
- MyEclipse快捷键(全面)
- ADO,ADOStream,Dbexpress与TDataSetProvider的效率
- MOSS2007应用-MOSS概述
- WebRTC的官网下载和编译方法
- 自己扩展封装Hibernate模板DAO-之三Hibernate+JSP的分页功能
- 图像二值化----otsu(最大类间方差法、大津算法)
- 使用91手机助手进行软件备份
- asp.net中DateTime.Now.ToString()中的默认格式问题
- 回忆汇编
- 使用 Fiddler 分析网页加载过程