Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 2 of 2 total
Thread Just for interest
Mon, Dec 1 2008 1:25 PMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Normally I try to use persistent fields, but when using a unit without form, or passing the table as a parameter,  I use FieldByName and I just decided to do a check of differences in speed. I wrote a really sophisticated test program (below) and the results were

Persistent field    234
FieldByName    2834
Direct index        188

Even though its a fast PC and gettickcount isn't massively accurate I'm still impressed with FieldByName.

Roy Lambert


procedure TForm1.Button13Click(Sender: TObject);
var
lc: integer;
t1, t2, t3, t4: integer;
junk: integer;
const
Loops = 1000000;
sig = '_Sig';
begin
Users.Open;
t1 := gettickcount;
for lc := 1 to loops do begin
 junk := Users_sig.AsInteger;
end;
t2 := gettickcount;
for lc := 1 to loops do begin
 junk := Users.FieldByName(sig).AsInteger;
end;
t3 := gettickcount;
for lc := 1 to loops do begin
 junk := Users.Fields[12].AsInteger;
end;
t4 := gettickcount;
showmessage('_Sig: ' + IntToStr(t2 - t1) + #13 + 'fieldbyname: ' + inttostr(t3 - t2) + #13 + '[]: ' + inttostr(t4 - t3));
end;
Mon, Dec 1 2008 2:15 PMPermanent Link

Tiago Ameller
Roy,

<<Even though its a fast PC and gettickcount isn't massively accurate I'm still impressed with FieldByName.  >>

In remote Delphi 2.0 times, I ran a similar test, with similar results. My opinion is in most cases, there is not significative difference using
persistent fields or fieldbyname. In a user interactive process, this difference does not matter.
Image