AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Performance TpFIBDataset
Thema durchsuchen
Ansicht
Themen-Optionen

Performance TpFIBDataset

Ein Thema von nachti1505 · begonnen am 23. Okt 2008 · letzter Beitrag vom 29. Okt 2008
Antwort Antwort
Seite 3 von 3     123   
exilant

Registriert seit: 28. Jul 2006
134 Beiträge
 
Delphi 11 Alexandria
 
#21

Re: Performance TpFIBDataset

  Alt 27. Okt 2008, 10:14
Zitat von nachti1505:
Mein letzter Verdacht bezieht sich nun auf meine FIB-Version. Bin immer noch TRIAL-User. Ist es vllt.möglich, dass Devrace die TRIAL von der Performance her beschränkt hat???
Die Trial entspricht der Vollversion. Du musst den Fehler woanders suchen. Die grundlegenden Mechanismen von FIB, UIB und IBX sind sich sehr ähnlich. Der Grund für Deine extrem unterschiedlichen Mess-Ergebnisse ist nicht in den Komponenten zu suchen. Hast Du vielleicht eine eigene Klasse von TpFibDataset abgeleitet und wenn ja, was tut die? Was macht die Datenbankkiste sonst noch so? Wie hoch ist die CPU Auslastung? Was ist das überhaupt für eine Kiste? Fragen über Fragen...
Anything, carried to the extreme, becomes insanity. (Exilant)
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#22

Re: Performance TpFIBDataset

  Alt 27. Okt 2008, 10:52
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:
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;
5.) Ergebnis: bei ca. 3k Datensätze knappe 3500ms

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*
  Mit Zitat antworten Zitat
exilant

Registriert seit: 28. Jul 2006
134 Beiträge
 
Delphi 11 Alexandria
 
#23

Re: Performance TpFIBDataset

  Alt 27. Okt 2008, 13:26
Zitat von nachti1505:
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:
// Delphicode 5.) Ergebnis: bei ca. 3k Datensätze knappe 3500ms
Exakt gleicher obiger Test ergibt bei mir bei 4873 Records eine Laufzeit < 1 Sec.
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.
Anything, carried to the extreme, becomes insanity. (Exilant)
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#24

Re: Performance TpFIBDataset

  Alt 28. Okt 2008, 13:41


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...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#25

Re: Performance TpFIBDataset

  Alt 28. Okt 2008, 19:36
Zitat von nachti1505:
6k Datensätze - Zeit 400ms..... also weit < 1s
trotzdem zu lange, oder sind Blobs oder andere größere Datanstrukturen vorhanden ?

Zitat von nachti1505:
Habe damals für die DB das CharSet UTF8 verwendet. Nachdem nun alles auf WIN1251 zurückgestellt wurde, ist auch die Performance wieder da....
Sofern sich das wirklich reproduzieren lässt, dann melde das Devrace. Oder sogar dem Firebird-Projekt. Besser wäre es allerdings, die DB füt Testzwecke hier zur Verfügung zu stellen.
Gruß
Hansa
  Mit Zitat antworten Zitat
exilant

Registriert seit: 28. Jul 2006
134 Beiträge
 
Delphi 11 Alexandria
 
#26

Re: Performance TpFIBDataset

  Alt 29. Okt 2008, 09:27
Zitat von Hansa:
Zitat von nachti1505:
6k Datensätze - Zeit 400ms..... also weit < 1s
trotzdem zu lange, oder sind Blobs oder andere größere Datanstrukturen vorhanden ?
Wieso lange? Das sind 6.000 Records in weinger als einer halben Sekunde. Wie schnell sollte es denn Deiner Meinung nach sein?
Anything, carried to the extreme, becomes insanity. (Exilant)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz