[fpc-pascal] msedb and fcl-db benchmarks
Martin Schreiber
fpmse at bluewin.ch
Wed Jul 18 07:57:11 CEST 2007
On Tuesday 17 July 2007 23.58, Joost van der Sluis wrote:
> > So this makes your case, doesn't it. Martin argued that his dataset was
> > designed to work together with his visual controls.
>
> Yes, but it's an important part, because exactly this is the part that
> has changed. Except from this and the widestring-difference, there are
> no real differences. So I'm very curious know why his dataset works
> better with his visual controls.
> I want to know this, so we can remove the need for two times the same
> component. Or that's at least what I hope for.
>
What I need for the MSEgui components is
- fast RECNO access for the DB grid proportional scrollbar mode (I think we
talked about that when you changed TBufDataset to an linked list).
- internal indexes to switch sorting order in DB grids fast.
- calculated fields (which didn't work in TBufDataset at the time I needed
them).
- internal calc fields (which are not implemented in TBufDataset up to now
AFAIK).
- full BLOB and MEMO support (they where not fully functional in TSQLQuery at
the time I needed them).
-"TClientDataset" functionality (not implemented in TBufDataset).
- the storage of strings as widestrings to prevent converting from/to unicode
at every data access.
- the storage of strings as pointer to a variable length string to allow the
MSEgui users to use long varchar fields without memory waste (TSQLQuery
stored the popular PostgreSQL TEXT field with dsMaxStringSize = 8192 bytes).
- the limiting of the edited string length by character count and not byte
count (think on multibyte encodings or current Linux installations with utf-8
locals).
- and possible more which comes into mind at the moment...
> > I'm refering to very large buffered datasets held in memory by
> > middleware for fast access. It is well known for instance that Delphi's
> > TClientDataset chokes with say 100000 records, whereas different designs
> > scale much better, TkbmMemTable for instance. Not long ago Marco van der
> > Voort suggested (in another forum) to have a look at something like his
> > "lightcontainers", apparently someting completely different (than for
> > instance a TList based dataset).
> > I've put forward this point because for datasets used with visual
> > controls speeds can't be the issue at all. But for very large sets it
> > certainly is.
>
> Well, that's exactly the difference between mse's bufdataset and the
> fcl-db one. Tmsebufdataset is based on a TList, TBufDataset isn't. And I
> believe that at TList based dataset is always slower. (although it could
> save some memory)
>
The architecture of tmsebufdataset are dynamic arrays of pointer which hold
pointers to the recordbuffers.
One for the "physical" order and one for every internal index.
Martin
More information about the fpc-pascal
mailing list