这个问题确实奇怪!(100分)

  • 主题发起人 主题发起人 expect
  • 开始时间 开始时间
E

expect

Unregistered / Unconfirmed
GUEST, unregistred user!
还是这个问题(前两天问过)空循环一个3400行的表
声明:只是空循环,没有连接数据感知控件。窗体上只有一个按钮和文本框

var
t:TDateTime;
begin
t:=Now;
Table1.Open;
Table1.First;
while not Table1.Eof
Table1.Next;
Table1.Close;
t:=Now-t;
Edit1.Text:=FormatDateTime('ss,zzz',t);
end;
并且,我用下面四种方式测了一下时间(单位:毫秒)
VB: ADO 80
VB: DAO 500
Delphi: BDE 900
Delphi: ADO 3000
请高手多付出一些耐心,进行一下测试。
 
是同一个表吗?
 

while not Table1.Eof
Table1.Next;
缺了一个“DO”,速度确实不快。
 
告诉你个消息:
var
t:TDateTime;
begin
edit1.Text :='';
t:=Now;
Table1.Open;
Table1.First;
while not Table1.Eof do
table1.Next
Table1.Close;
t:=Now-t;
Edit1.Text:=FormatDateTime('ss,zzz',t);
end;

同一程序,第一次2400,第二60 ,差别就这么大!!!!!!!!!!!!
 
我说的是在BDE下,第一次2400,再运行次就60了。
以前注意了,没想到差的这吗大!
 
我在BDE下又试验了一下,几次都一样,1000多毫秒。不知你用ADO试验的情况怎样?
当然是同一个表。
 
1.adotable的cursorlocation应当设置为clUseServer
2.离开Delphi IDE直接运行EXE

相信速度已经快很多了
 
Delphi: BDE 这种快的多,我很早已前就测试过的,

BDE是ADO的3到6倍。
 
希望大家在测试的时候要拿出具体的环境!
比如说:
VB: ADO 80
VB: DAO 500
Delphi: BDE 900
Delphi: ADO 3000
你是不是每次都是重新启动后,再来运行需测试的程序?运行结束,再运行一次;
然后再重启 运行另一个需测试的程序 每次运行的环境都要一样。
 
温柔一刀:
1.adotable的cursorlocation应当设置为clUseServer
2.离开Delphi IDE直接运行EXE
我都试验了一下,没有效果。另外,我把CacheSize设了一下,微软说,
能快一点,也没有效果。
TO lha:
各种环境下速度大致差不多,相差不到几十毫秒。
 
to expect:
没效果?感觉实在不太可能,因为无论delphi比VB快还是慢,我说的方法导致Delphi比原来快是肯定的。
你试验的时候多运行几次,不要只运行一次,并且检查一下设置,可不要一不留神把别的时间算进去了。 :-)

另外,我也只能问问你的环境了--什么数据库、ado/dao版本多少?
 
测试看很多了
BDE比ADO快,但高效不是只是体现速度上
VB确实DAO比DELPHI快一些
ADO是不是。。
 
温柔一刀:
数据库是本地Access2000数据库,ADO的版本我试验了一下,区别不大。
因为是本地数据库,所以我想cursorlocation和CacheSize应该影响不大。
但是不管怎样,在Delphi下,用ADO空循环一个3400行的表很难1秒钟完成。
对了表里有三个字段。
我是多么希望能赶上VB的速度。
 
>>因为是本地数据库,所以我想cursorlocation和CacheSize应该影响不大。
“我想”可不一定对哟!无论什么数据库,CursorLocation对速度的影响都绝对不是一点点。

>>但是不管怎样,在Delphi下,用ADO空循环一个3400行的表很难1秒钟完成。
“不管怎么样”也得有个前提吧?你的机器难道有毛病?
我的机器上4000多行的表用Delphi5+ADO可以0.2秒做完遍历。

ps:你的Pack之类的加了么?
 
多人接受答案了。
 
温柔一刀:
请你有空帮我看看这条,如果觉得麻烦就不要啦,其他人不好意思啦!
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=654741
 
后退
顶部