[DUG] Speed of loading a Client DataSet

David Moorhouse delphi at moorhouse.net.nz
Thu Dec 6 16:03:15 NZDT 2007


Hi John

TDatset.FieldByName is slow - and you're repeating it 15,000X5 times.

Much better to declare 5 TField type vars, use TDataSet.FindField or
TDataSet.FieldByName to assign them prior to the loop.

See how you get on.

Cheers

D

On Thu, 6 Dec 2007 15:35:49 +1300, you wrote:

>I want to use TClientDataSet for data that is NOT in a database.
>
>Just reading the data from a file, eg for 15000 records, takes much less
>than a second, but reading the data and inserting several fields into a
>client dataset in a simple loop takes a lot longer, eg 6 seconds or more for
>the same 15000 records.
>
>The code I am using is like:
>
>    with tbData do
>    begin
>      append;
>      fieldbyname('FieldName1').asInteger:=Number1;
>	fieldbyname('FieldName2').asInteger:=Number2;
>      fieldbyname('FieldName3').asInteger:=Number3;
>      fieldbyname('Name').asString:=Name;
>      fieldbyname('Desc').asString:=Desc;
>      post;
>    end;
>
>I would like to speed this up, as I have seen that reading similar data from
>a Database eg with a query is much faster.  Any suggestions to speed this
>up?
>
>I already have lines in such as
>
> tbdata.DisableControls;
> tbdata.EnableControls;
>
>Before and after I start reading the data to stop screen updates....
>
>John
>
>
>_______________________________________________
>NZ Borland Developers Group - Delphi mailing list
>Post: delphi at delphi.org.nz
>Admin: http://delphi.org.nz/mailman/listinfo/delphi
>Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe




More information about the Delphi mailing list