BDE比拼ADO(100分)

Z

zhuhuan

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,我在使用ADO和BDE的时候,进行了一次测试,测试很简单,使用SQL SERVER 7平台,各自让BDE和SQL执行多次相同的查询和数据操作,再统计时间发现两者几乎有2:1的差异,各位对此有什么高见?请发表,我对此题目奉送100分
 
Ado要比BDE好多了,价格便宜,量又足,我一直用它
 
Ado和BDE的价格各是多少?
 
ADO好过BDE

Borland都不打算再升级BDE了
 
need speed

bde > ado
 
我用的都是direct的。更快。
 
我也作过有关的测试,列出来供大家参考。

主题:关于SQL语句速度测试的有关问题

在我的机子上,作了多次的SQL语句速度测试,如下:

测试环境:赛扬333,内存64M,硬盘6.8G,WINNT Server 4;
测试SQL语句:查询出零售明细表中11780条记录(Select * From t_possale);
数据库为Access;

由于机器性能不够稳定,所以测试数据,在较大的波动。以下只给出大概的值。

1、最快的是使用DBE走二层结构,所用不到1秒钟;
2、ADO走二层结构,用十几秒钟;
3、如果ADO走三层结构,最快时用1分二十几秒;
4、ADO中ADODataSet的确比ADOQuery快,担快的很有现;
5、ADO的连接串中,使用Jet40也确实比ODBC快,但并不太明显;
6、分组DBGrid会消耗太多的查询时间,建议在数据量大于5000千条,并使用三层结构走ADO时不要用
它,而改用普通DBGrid。
7、虽然不我们不太喜欢BDE,但BDE的效果是最好的。请看以下数据;

二层结构+BDE+普通DBGrid 不到1秒钟;
三层结构+BDE+普通DBGrid 最快记录16秒,最慢记录29秒;
三层结构+BDE+分组DBGrid 最快记录27秒,最慢记录49秒;
(有一次用了9分多,可能是机器性能不稳定一直在读硬盘造成的。)

二层结构+ADO+普通DBGrid 平均在十几秒;
二层结构+ADO+分组DBGrid 平均在四十几秒;
三层结构+ADO+普通DBGrid 平均在四十几秒;
三层结构+ADO+分组DBGrid 最快记录1分二十三秒,最慢记录四分多钟;

8、最佳组合为:
三层结构+BDE+分组DBGrid
可以同时拥有三层结构和分组DBGrid,并且速度也够快。


注:以上数据是在Access上测出的,SQL Server还未试过;

2000.3.16

总体上说,BDE比ADO快2到3倍,但BDE的稳定性不好,就连它的技术支持
也称认这一点。

与Inprise公司接触,了解到以下几方面:
1、Corel公司与Inprise公司合并,加强Linux下软件开发,Delphi 6开发小组已开始工作,预计明年发布 Delphi v6;
2、Delphi与Access的结合,自D5开始有所支持,对ado的支持。一般来说,对微软系列的数据库采用ado,其他非微软系列采用bde;
3、采用ado连接时,ado-connetion本身含有非可视属性应加入连接串中,具体说明在微软相关文档中可查到;
4、尽量不采用odbc连接数据库,更不应该通过odbc+ado;
5、关于PARADOX数据库的性能及其稳定性,具了解小型数据库采用PARADOX的居多,而access往往与vb结合。
6、采用ado组件时首选adodataset,query、table是其的派生类,用来与其他模式系统兼容的;
 
不可能,dbe连接access使用了很低效率的连接,而且也是要通过DAO引擎的,决不可能有如此
大的差别。
 
反正我从来不用DBE。
 
据说李维的〈高效数据库应用系统篇》中有详细的介绍。
这本书市面上没有看到。有朋友知道吗?
 
用大富翁的离线数据测试了一下发现对于Access数据库,性能比是这样的。
ADO(Jet4.0) : BDE : DAO = 140 : 70 : 26 (实际所需要的秒数)

测试是先取出人名,在按人名一个一个做查询。尽量减少cache的影响。

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
d,e:TDateTime;
begin
d:=now;
labinfo1.caption:=DateTimetostr(d);
ADODataSet1.Active:=False;
s:='select distinct userfrom from letters ';
ADODataSet1.CommandText :=s;
ADODataSet1.Active:=True;
while not ADODataSet1.Eof do
begin
s:='select * from letters where userfrom="'+ADODataSet1.fieldbyname('userfrom').AsString+'" order by datetime';
ADODataSet2.active:=False;
ADODataSet2.CommandText:=s;
ADODataSet2.active:=True;
ADODataSet1.Next;
end;
e:=now;
labinfo2.Caption:=DateTimeTostr(e);
labinfo3.Caption:=floattostr((e-d)*86400);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
d,e:TDateTime;
begin
d:=now;
labinfo1.caption:=DateTimetostr(d);
ADODataSet1.Active:=False;
s:='select distinct userfrom from letters ';
Query1.SQL.Text:=s;
Query1.Active:=True;
Query1.First;
while not Query1.Eof do
begin
s:='select * from letters where userfrom="'+Query1.fieldbyname('userfrom').AsString+'" order by datetime';
Query2.active:=False;
Query2.SQL.Text:=s;
Query2.active:=True;
Query1.Next;
end;
e:=now;
labinfo2.Caption:=DateTimeTostr(e);
labinfo3.Caption:=floattostr((e-d)*86400);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
s:string;
d,e:TDateTime;
begin
d:=now;
labinfo1.caption:=DateTimetostr(d);
ADODataSet1.Active:=False;
s:='select distinct userfrom from letters ';
DAOQuery1.SQL.Text:=s;
DAOQuery1.Active:=True;
daoQuery1.First;
while not DAOQuery1.Eof do
begin
s:='select * from letters where userfrom="'+DAOQuery1.fieldbyname('userfrom').AsString+'" order by datetime';
DAOQuery2.active:=False;
DAOQuery2.SQL.Text:=s;
DAOQuery2.active:=True;
DAOQuery1.Next;
end;
e:=now;
labinfo2.Caption:=DateTimeTostr(e);
labinfo3.Caption:=floattostr((e-d)*86400);
end;


 
太有趣了
 
李维在"电子商务篇"里面讲到,如果开发window/win2000下面的应用,
最佳方式是ADO+MTS,而不要用BDE.

另外,简单的比较速度是没有意义的,因为ADO只有结合了MTS(COM+)才能
发挥最大的效率 ---- 其实我也不懂. :)
 
李维是推荐使用ADO的,但是不知道大家怎么同时测出BDE比ADO快。
这和MTS关系不大,BDE同样可以连MTS。
 
很高兴大家一起来讨论,程云的测试比较细致和专业,其实我本来也准备使用ADO的,我们目前在做一个C/S结构的系统,在目前的成熟软件里,我很少看到有三层结构的,所以我使用ADO和BDE只是为了与数据库相连,其次我的测试也比较简单,基本上只是一些查询,因为我原来认为SQL SERVER 7的原生驱动程序是ADO接口的,所以我在ADO上会有好的性能体现,而且我们准备利用一些SQL SERVER 7的新特性,可是测试结果却令人惊讶,不知大家还有什么建议,多谢多谢!
 
>>这和MTS关系不大,BDE同样可以连MTS
关系大了,BDE享受不到MTS的很多好处,看看"电子商务篇"就知道了
 
目前的MTS结构的成熟软件有什么?大多数还是在用C/S结构,BDE稳定还是ADO稳定,大家各执一词,看来此问题的答案还是没有出现,望各位再发表高见。
 
顶部