![]() |
Re: Performance TpFIBDataset
Zitat:
|
Re: Performance TpFIBDataset
Nachdem Hansa ja die Ursache auf NICHT-MEHR-VORHANDENE Grids oder Fehler meinerseits schiebt, nochmal ein Versuch zur Problembehebung / -lokalisierung!
1.) Neue VCL-Anwendung 2.) pFIBDatabase, pFIBTransaction, pFIBDataset auf Formular gesetzt und verbunden 3.) in pFIBDataset SQL-Anweisung generiert (SELECT name1, name2, name3, strasse, ort, .... FROM adresse) 4.) Button auf Formular gesetzt und im OnClick:
Delphi-Quellcode:
5.) Ergebnis: bei ca. 3k Datensätze knappe 3500ms
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; debug: cardinal; begin debug := GetTickCount; pFIBDataset1.Active := true; while NOT pFIBDataset.EOF do begin for i := 1 to 10 do pFIBDataset1.Fields[i].AsString; pFIBDataset1.Next; end; pFIBDataset1.Active := false; ShowMessage(IntToStr(GetTickCount - Debug)); end; Ergo keine Besserung, trotz ORIGINAL-Kompos (nichts abgeleitet) und selbst OHNE irgendwelche Grids. Selbiger Testlauf mit JvUIB oder IBX brachte die gewohnten niedrigen Laufzeiten... Ob ich mich mal an Devrace wende? Oder hat von euch noch einer eine Idee... BTW: Werde das heute nachmittag noch in einer VirtualMachine probieren *gruebel* |
Re: Performance TpFIBDataset
Zitat:
Bei Dir satte 3,5 Sek. Immerhin ist das Faktor 10 schneller als Deine letzte Angabe (35.000 ms) aber immer noch nicht schnell. Vermutlich hast Du einfach eine schwächere Maschine. Setze mal das "Unidirektional" Property im TpFibdatset auf "True". Dann verhält sich das Dataset quasi wie ein tpFibQuery. Bei mir ist die Schleife dann Faktor 3 schneller. Bringt in diesem Fall aber "nur" objektiv was, da die Schleife auch vorher schon sehr schnell durchlaufen wurde und es somit subjektiv keinen Unterschied macht ( bei mir). Nachtrag: Der gleiche Test in einer VM (VMWare Workstation 5.5.6) verdeutlicht den erheblichen Unterschied: Unidirektional False: 3,7 Sek. Unidirektional True: < 1 Sek. Ich tippe also mal darauf, das tpFibdataset tatsächlich eher lahm ist. Bei dem was das Teil leistet allerdings auch nicht weiter verwunderlich. Erinnert mich an das "ttable" Syndrom. Das heisst im Klartext: tpFibDataset nur benutzten, wenn eine "Live"-Datenmenge benötigt wird. Bei mir ist das praktisch nie der Fall. Ich arbeite nicht mit datengebundenen Komponenten. Weiterhin braucht kein Mensch ein lebendes Dataset mit 3500 Records/Rows Ich würde über das Design der Anwendung nachdenken. |
Re: Performance TpFIBDataset
:oops: :wall:
Hmmm.... letzter Testlauf 6k Datensätze - Zeit 400ms..... also weit < 1s Habe damals für die DB das CharSet UTF8 verwendet. Nachdem nun alles auf WIN1251 zurückgestellt wurde, ist auch die Performance wieder da..... Vielen, vielen Dank an Deddyh, exilant und auch an Hansa... |
Re: Performance TpFIBDataset
Zitat:
Zitat:
|
Re: Performance TpFIBDataset
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz