Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MSSQL/ADO ... speed is everything !!! (https://www.delphipraxis.net/180786-mssql-ado-speed-everything.html)

DeddyH 18. Jun 2014 10:55

AW: MSSQL/ADO ... speed is everything !!!
 
http://www.delphitools.info/2010/11/...s-your-friend/

Mikkey 18. Jun 2014 10:56

AW: MSSQL/ADO ... speed is everything !!!
 
Zitat:

Zitat von bernhard_LA (Beitrag 1262728)
OK, und wie geht es denn einfacher ? Kann ich Code-Beispiel sehen ?


Delphi-Quellcode:
var
  fld1, fld2: TField;
begin
  ...
  query.Open();
  fld1 := query.FieldByName('...');
  fld2 := query.FieldByName('...');
  while not query.EOF do begin
    ProcessRecord(fld1, fld2);
    query.Next();
  end;
end;

bernhard_LA 18. Jun 2014 11:03

AW: MSSQL/ADO ... speed is everything !!!
 
Zitat:

Die Frage nach dem ORM hast Du gesehen?

ja, wäre dies empfehlenswert : http://instantobjects.sourceforge.net/#documentation

mkinzler 18. Jun 2014 11:09

AW: MSSQL/ADO ... speed is everything !!!
 
Oder

http://www.tmssoftware.com/site/aurelius.asp
http://www.devart.com/entitydac/editions.html

bernhard_LA 18. Jun 2014 11:26

AW: MSSQL/ADO ... speed is everything !!!
 
die aktuelle Version vom code sieht wie folgt aus

Delphi-Quellcode:
   procedure complete_Process(...);

            mytimer := 0; /// hier beginnt die Zeitmessung

            someInit ();

            MakeSQLStr();

            query.sql.add();
            query.open;

            myTimer.result(1) // hier messe ich die Zeit bis zum laden der Daten in die Query

            query.first;
            for i := 0 to maxrecords do
                 begin
                 copy_data_to_generic_objectlist
                 query.next;
                 end;
             myTimer.result(2); // hier ist die Zeitmessung nach Ende alle DB arbeiten


            for I := 0 to generic_objectlist do
                 begin
                  data :=generic_objectlist.items[i];
                  proc ( data, .....);
                 end;
            myTimer.result(3); // hier ist die Zeitmessung wie im Graphen ganz oben gezeigt
            finalize



           
            end;

95 % der Zeit benötigt die Schleife proc(data ,,, ) , d.h. ich werde dem Ansatz von SIR RUFO folgen ....

pertzschc 18. Jun 2014 11:45

AW: MSSQL/ADO ... speed is everything !!!
 
Zitat:

Zitat von bernhard_LA (Beitrag 1262743)
die aktuelle Version vom code sieht wie folgt aus
95 % der Zeit benötigt die Schleife proc(data ,,, ) , d.h. ich werde dem Ansatz von SIR RUFO folgen ....

Sag mal, dass ist doch dasselbe Thema, welches Du bereits in http://www.delphipraxis.net/180711-m...ead-error.html zur Diskussion gegeben hattest.

Hier war die Zusammenfassung nach 7 Seiten Thread dann gefunden:
Zitat:

Wenn man wüßte was er wirklich treibt, könnte er auch ein paar konkrete Lösungsvorschläge bekommen.
Warum geht es also wieder ohne wirklichen Wissensdurst durch den TE weiter?
Grüße, Christoph

bernhard_LA 18. Jun 2014 11:52

AW: MSSQL/ADO ... speed is everything !!!
 
Das Thema von ersten Thread ist schon (teilweise) implementiert und funktioniert auch. Wir halten unser Query Ergebnismenge bei x records , x = 10 .... 10.000;

Aktuell ging es mir um die Diskussion des optimalen x für unsere Anwendung, bzw. unsere Performance-Messreihen vor der großen Codeänderung.

Dejan Vu 18. Jun 2014 12:42

AW: MSSQL/ADO ... speed is everything !!!
 
So, und überlappende Abarbeitung interessiert dich ebensowenig, wie parallele. *Kopfschüttel*

Sir Rufo 18. Jun 2014 13:32

AW: MSSQL/ADO ... speed is everything !!!
 
Zitat:

Zitat von bernhard_LA (Beitrag 1262717)
Zitat:

Was wird denn inhaltlich in

proc (query, ......);

gemacht?

Vielleicht ist ja da schon Optimierungspotential, indem man das (teilweise) die Datenbank machen läßt?
über eine Ganze Anzahl von
Delphi-Quellcode:
mydataset.fieldbyname('...').as....
hole ich mit den Inhalt der einzelnen Spalten am aktiven Datensatz und erzeuge dann eine Klasse mit der geht's dann in die weitere Verarbeitung.

Genau das Erzeugen von Daten-Objekten gehört noch in den Teil der die Daten ausliest (und natürlich ohne das ständige FieldByName)

jfheins 18. Jun 2014 22:49

AW: MSSQL/ADO ... speed is everything !!!
 
Zitat:

Zitat von bernhard_LA (Beitrag 1262750)
Aktuell ging es mir um die Diskussion des optimalen x für unsere Anwendung, bzw. unsere Performance-Messreihen vor der großen Codeänderung.

Eine Diskussion hilft da eigentlich wenig, sowas muss man probieren (manche sagen "messen"). Dazu kommt: Nur ihr habt die korrekte Hardware, nur ihr könnt das messen.

Läuft übrigens hier unter #7:

Zitat:

Mistake #7: Assuming that runtime characteristics in one environment tell you what behavior will be in a different environment.
Run your benchmarks in the actual environment that the code will be running in; use machines that have the same hardware and software that will typically be used by the customers who ultimately will run the code.
Aber das nur am Rande, ich glaube die wichtigen Punkte wurden schon erwähnt :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.
Seite 3 von 3     123   

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