Subject Re: Huge performance differential
Author DanyM
--- In IBObjects@yahoogroups.com, "jlane_campbell" <olgreyfox@...> 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)...

Besides the settings you have got in TIBOQuery (fetchWholeRows et.c.) and the discussed problem of FieldEntyType (increases prepare time) and what others wrote already there is the leverage of DXs data loading.

This process behaves differently for when "gridmode" is active. From you post i deduce that you are using the grid with gridmode = false. DX grid will access the dataset record by record and the record pointer may move (also check the grids DataControllers syncmode).

I do not remember exactly (sorry, sorry), but I let the grid do all it's setup stuff, opened the dataset (AutoFetchAllRows = true) and *then* assigned the datasets datasource to the grid view. This way I could let IBO load it all and the grid accesses would not create any net activity. If the BLOB is part of the gridview items I have also noted that blob loading takes place. There is also an option to sync the dataset whilst navigating the grid, perhaps that option should be disabled if it is active during loading.

I know this is murky and inexact information, but perhaps it will help.

Again: HTH,

/D