Subject Re: [IBO] Huge performance differential
Author jlane_campbell
Hi, Jason,
This is a "parallel" to another message I sent via my work e-mail (lcampbell@...).

The query was: select * from constituents order by constituentid. It's connected via a TIBODatabase connector. The FetchWholeRows property is True.

The Constituents table has 16,223 records
Cols: 33, of which 1 is a Blob/Text/80. The others are integer or string type.

As I continue to fiddle with the test app in Delphi2010, I've determined that the time lag seems mostly associated with the loading of the DevEx grid control, since in the Delphi IDE, if I unhook the query & change it to Active, I get very little time lag. Hook the query to the grid, and the time goes up to 24-27 seconds.

I've since set up another query and grid that selects (4) columns -- (2) integer & (2) strings. It runs & loads the grid in about 12 seconds. So the blob & field count (the shear volume) is one issue; the loading of the DevEx control is another.

The "native" Delphi dbExpress object -- a TClientDataset -- is running the full (select * from...) query and loading the DevEx grid in about 2 seconds. It's also allocating roughly 14Mb of memory as it does so.

So ... what I'm trying to find out is ... what is the dbExpress object doing that the IBOQuery is not, and is there any IBO object that does something similar?


Lane Campbell
NW Software

--- In, "Support List" <supportlist@...> wrote:
> > I've recently run a test within the Delphi 2010 framework, comparing
> > IBObjects performance with Delphi's dbExpress connection. On a common
> > form, I placed two DevEx cxGrids. One grid was linked to a TIBOQuery
> > connected to a Firebird DB via a TIBODatabase component. The other grid is
> > linked to a TSimpleDataset that connects to the same database via the
> > TSQLConnector object. Both queries are the same (select * from
> > constituents order by constituentid). The dbExpress component chain loads
> > its grid in about 2 seconds. The IBObjects component chain is taking
> > upwards of 20-30 seconds. In both cases, the query produces 16,223 records
> > in the result set.
> >
> > Our 2010 installation is IBObjects v4.9.12; the DevEx grids are from the
> > Quantum Grid Suite v6.55
> >
> > What's happening? What's causing the huge performance hit?
> >
> > I'm noting that the dbExpress chain is allocating about 14Mb of memory in
> > returning the result set ... the IBO chain has little or no affect on
> > memory usage ...
> >
> > Any answers, pointers, tips greatly appreciated, as we've got a history of
> > highly satisfactory use of IBObjects with Delphi 7 (although with a
> > similar performance hit loading DevEx grids from TIBOQuery)...
> It seems as though something is not configured correctly.
> IBO does need some knowledge and tuning to get the best performance.
> Would you please provide me with more information?
> How many records are in the dataset?
> How many columns are in the dataset?
> What is the FetchWholeRows property set to?
> Are you doing a fetch all records?
> Etc.
> Thanks,
> Jason LeRoy Wharton