翻译:FieldByName, FindField确实太好用了(10)

  • 主题发起人 主题发起人 delphi2011
  • 开始时间 开始时间
D

delphi2011

Unregistered / Unconfirmed
GUEST, unregistred user!
翻译:FieldByName, FindField确实太好用了 分析 FieldByName, FindField 对效率的影响和解决办法详细资料 http://www.delphishare.com/index.asp?/1697-14-0-1-1.html
 
不错,好文章
 
clientdataset有test1-test10 共10个整数字段写下列代码测试varii,jj:Integer;t1,t2:tdatetime;totvalue:integer;ffield:Tfield;begin self.ClientDataSet1.Active:=false; self.ClientDataSet1.CreateDataSet; self.ClientDataSet1.Open; for ii:=1 to 10000 do begin self.ClientDataSet1.Append; for jj:=0 to 9 do self.ClientDataSet1.Fields[jj].AsInteger:=jj; end; self.Memo1.Lines.Clear; self.ClientDataSet1.First; ffield:=self.ClientDataSet1.FieldByName('test1'); t1:=now; self.ClientDataSet1.First; while not self.ClientDataSet1.Eof do begin //totvalue:=ffield.AsInteger;//直接用字段对象 //totvalue:=self.ClientDataSet1.fields[1].AsInteger;//直接用索引 //totvalue:=self.ClientDataSet1.fieldbyname('test1').AsInteger;//最好的情况第一个字段就找到 //totvalue:=self.ClientDataSet1.fieldbyname('test5').AsInteger; //一般情况循环一部分字段就找到 totvalue:=self.ClientDataSet1.fieldbyname('test10').AsInteger;//最坏的情况最后一个字段才找到 self.ClientDataSet1.Next; end; t2:=now; self.Memo1.Lines.Add('开始'+datetimetostr(t1)+'---结束'+datetimetostr(t2)+'----耗时'+floattostr((t2-t1)*24*3600*100)+'毫秒');1、2 速度差不多约3ms3 4.5ms4. 6.5ms5. 10msfieldbyname和字段对象速度相差约3倍字段越多,对fieldbyname影响越大
 
d世界qq群23981160
 
不错,好文章
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
674
import
I
I
回复
0
查看
796
import
I
后退
顶部