ADO povzdech

vložil Radek Červinka 9. března 2012 17:18

Právě konvertuji jednu z našich aplikací z ADO na UniDAC a je to velmi vtipné. Nejenže je UniDAC výrazně rychlejší, ale i efektivnější v práci s pamětí.

Stejná tabulka v gridu přes ADO potřebuje 475M v paměti, s UniDAC potřebuje 130M v paměti (úplně načtená, při postupném načítání je to jen cca 10M).

Prima optimalizace Microsofte. Prostě jsem si musel postesknout.

Jedině ještě nevím jak v pár případech nahradím Sort na klientském počítači. Asi přes nějaký memory dataset.

Update: Objevil jsem IndexFieldNames a vypadá to, že je to přesne to co potřebuji. Řazení na klientu, s tím, že když nejsou data načtena tak se hold dočtou.

DataSet1.IndexFieldNames := 'LastName ASC CIS; DateDue DESC';

Each field may optionally be followed by the keyword ASC / DESC or CIS / CS / BIN.

Use ASC, DESC keywords to specify a sort direction for the field. 
If one of these keywords is not used, the default sort direction 
for the field is ascending.

Use CIS, CS or BIN keywords to specify a sort type for string fields:
- CIS - compare without case sensitivity;
- CS - compare with case sensitivity;
- BIN - compare by character ordinal values (this comparison is also case sensitive).

Tagy:

Komentáře

9.3.2012 18:26:16 #

Zdeněk Vašků

Ta rychlost je znát. Já to používám hodně přes TClientDataset, ale je fakt, že TUniDataset je sám o sobě hodně rychlý (i když nemá všechny vlastnosti ClientDatasetu). Jedna z právě chybějících jsou indexy/setrange/FindKey. Většinu neprogramátorského třídění řeším přes DevExpress Grid. Při 60 tis. větách  je to také trochu pomalejší, na mojí šunce (Pentium C2D) to nabíhá cca 4-5 sec.

Zdeněk Vašků

12.3.2012 1:14:15 #

Kaco

Nazdar Radku
TMemDataSet pripadne naslednik VirtualTable a property IndexFieldNames
DS.IndexFieldNames := 'Col1 ASC; Col2 DESC';
Funguje to senzacne, a triedenie este moze byt aj binarne alebo case(in)sensitive

Kaco

12.3.2012 21:37:21 #

petr

Sort na klientovi nahraď sortem na serveru.

petr

14.3.2012 17:57:05 #

bullhead

"Sort na klientovi nahraď sortem na serveru." ...no v případě clientských datasetů to snad není nutné + proč otravovat se sorty server když už má klient data u sebe (předtřídí si je sám jak potřebuje klidně i několikrát)? Při dnešních RAM bych už toto na serveru nedělal.
B.

bullhead

14.3.2012 21:56:55 #

Radekc

Ja jsem predtim používal sort na klientu v mřížce, ale to přímo UniDac neumí (jen přes memory dataset) a ani to není možné i vzhledem k částečnému načítání dat.
Da se volat SetOrderBy (nebo něco takového), ale to je právě sort na serveru.

Radekc

15.3.2012 1:10:55 #

bullhead

TUniQuery->SpecificOptions->záložka Options->položka FetchAll na TRUE (defaultně je na FALSE např. pro Firebird) ...při dnešní RAM
B.

bullhead

15.3.2012 10:30:30 #

Radekc

>BullHead
To já vím. Jenže já právě potřebuji částečné načítání - pár zákazníků používá připojení přes mobil. Takže to není problém RAM ale přenosu dat. Potřebují po dotazu co nejrychleji vidět první výsledky a pak se rozhodnout co dál.

Radekc

15.3.2012 11:15:58 #

bullhead

...rozumím - jinak vcera se objevil dalsi patch na UniGUI 0.88 i z novým ExtJS:
http://www.unigui.com/wpblog/2012/03/14/another-update-for-version-0-88/
B.

bullhead

15.3.2012 13:19:51 #

Radekc

Jinak jsem objevil IndexFieldNames a vypada to ze je to presne to co potrebuji. Řazení na klientu, s tím, že když nejsou data načtena tak se hold dočtou.

DataSet1.IndexFieldNames := 'LastName ASC CIS; DateDue DESC';

Each field may optionally be followed by the keyword ASC / DESC or CIS / CS / BIN.

Use ASC, DESC keywords to specify a sort direction for the field. If one of these keywords is not used, the default sort direction for the field is ascending.

Use CIS, CS or BIN keywords to specify a sort type for string fields:
- CIS - compare without case sensitivity;
- CS - compare with case sensitivity;
- BIN - compare by character ordinal values (this comparison is also case sensitive).

Radekc

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců