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影响越大