AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Performance: mein Programm trödelt!

Ein Thema von NicoleWagner · begonnen am 10. Jun 2020 · letzter Beitrag vom 12. Jun 2020
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#1

Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 08:52
Hallo User,

ich habe Delphi XE 3, Professional.
Und damit ein kleines Programm geschrieben: ein Formular, ein paar Panels, ein paar schlanke Textdateien als Input. Einige arrays, die mir performant erzeugt und vernichtet erscheinen. Für dieses Programm sollte mein PC einen Wimpernschlag benötigen, es zu starten.
Es braucht jedoch 3-4 Sekunden, bis es sich zeigt.

Wie finde ich die angezogene Handbremse?
Es kann etwa sein, dass ich ein array in einer falschen Schleife zig mal erzeuge. Doch wenn ich es konkret wüsste, würde ich es ändern.
Als letzter Notanker würde ich Zeitmesser in meinen Code setzen. Doch das ist recht viel zu-Fuss-Arbeit.

Wie kann ich das herausfinden?
Gibt es da Tools oder Befehle, die schnell aufgerufen sind?

Danke für Tipps!
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 09:06
3-4 Sekunden kann man vielleicht sogar mit F8 und F7 finden.

Wenn es weiter ins Detail gehen soll, kann ich AQTime empfehlen.
Ich bin aber nicht sicher, ob es da bei XE3 eine kostenfreie abgespeckte Version gab.

Wenn man solche Untersuchungen häufig braucht, lohnt sich auf jeden Fall die Prof-Version.

Ansonsten sind Zeitstempel loggen wohl die einfachste Variante.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 09:10
Es gibt Tools, die nennen sich Profiler. Bis Delphi XE7 (meine ich) war eine Embarcadero-Edition von AQTime dabei, und das kann ich ebenfalls nur empfehlen. Ob das bei XE3 der Fall ist kann ich sagen. Ein bisschen Einarbeitungszeit wird man aufbringen müssen, aber damit kann man wirklich wahre Wunder vollbringen.

Ansonsten ist der Tipp mit dem Debugger und F7-F8 sicher hilfreicher als er sich anhört. Versuch es doch mal, damit findest du innerhalb weniger Sekunden doch schon einmal wo es wohl hängt - Beim Erzeugen der Formulare? Wenn ja, welches? Wenn es einen Verursacher gibt, wo genau?
  Mit Zitat antworten Zitat
WladiD

Registriert seit: 27. Jan 2006
Ort: Celle
135 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 09:45
Häufig ist ein Virenscanner "schuld".

Versuche dort für die Exe oder den beinhaltenden Ordner eine Ausnahme hinzuzufügen.
Waldemar Derr
Profil bei GitHub

Geändert von WladiD (10. Jun 2020 um 09:45 Uhr) Grund: Typo
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 10:04
"etwas" günstiger ist ProDelphi http://www.prodelphi.de/

Wichtig hier: für die Messung wird der entsprechende Code in deine Units aufgenommen - d.h. vorher einchecken - oder Sicherung erstellen!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 12:00
... Einige arrays, die mir performant erzeugt und vernichtet erscheinen...
Wirklich? Schon mal geschaut wie viel Speicher deine Anwendung beim Start benötigt.
Evtl. hast du ja hier eine "ungünstige" x-GB-Große Arrays die du anlegst und Zeit zum start benötigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#7

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 12:16
Zitat:
"etwas" günstiger ist ProDelphi http://www.prodelphi.de/
Noch günstiger, sogar kostenlos, geht es entweder wie stahli sagte mit F7 und F8.
Oder aber du setzt in der DPR und im OnCreate der Formulare die du erzeugst mal sporadisch showmessage(''); rein durchnummeriert von 1 bis 10 oder A bis ....
Es dauert nicht lange und du siehst sofort, was Sache ist.

Geändert von DieDolly (10. Jun 2020 um 12:50 Uhr)
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#8

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 12:48
Danke für alle Antworten!
Ja, jetzt wo Ihr es sagt, AQTime war damals dabei, - doch ich kam damit nicht zurecht. Ich habe es aus meiner VM (die auch schlank sein soll) schon so lange entfernt, dass ich es schon wieder vergaß. Es kann sein, dass AQTime eher für höhere Versionen als die Pro geschrieben wurde und in der Pro zwar dabei war, doch nicht ordentlich läuft.

F7 und F8 geht bei mir eher nicht. Denn meine IDE hat Schluckauf schon seit ihrer Geburt. Delphi XE3 ist keine Glanzleistung von Embarcadero. Zuweilen müllt mir alleine die Programmierhilfe den Speicher so zu, dass ich Delphi mit dem Taskmanager abschießen muss. (Das hat jedoch wenig zu tun mit der schlechten Performance meines Programmes. Das ist fast sicher ein Programmierfehler.) Trotzdem ist F7 und F8 zu ungenau, denn das wäre dann möglicherweise der IDE-Schluckauf statt meines potentiellen Fehlers. Und F7 springt mir in den Maschinenquellcode, auch wenn ich es "einstelle", dass es das nicht tun soll ;-(
Ich arbeite in meiner Verzweiflung ersatzweise mit F4.

Ich werde zähneknirschend tun, was ich damals in Pascal tat: Eine paar globale Zeit-Variable erfinden. In der ersten wird "now" abgespeichert und danach immer wieder die Zeit (now) geholt und abgespeichert nach einem weiteren Programmschritt. "on destroy" werde ich dann subtrahieren und die Differenzen zwischen den Messungen ausgerechnet haben. Mit anderen Worten: ich speichere "now" in den globalen Vars zeit1, zeit2, zeit3,.... und sehe die jeweils vergangene Zeit.

Ein Graus in Zeiten von OOP...
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#9

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 12:51
Das mit den Zeitvariablen kannst du einfacher mit showmessage's machen. Bei 3 bis 4 Sekunden sieht man auch so, wo es Probleme gibt.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#10

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 13:05
Wenn man Zeitspannen im Sekundenbereich erfassen möchte, können sich diese auch schnell aus Teilzeiten zusammenaddieren. Ob da ShowMessage wirklich immer geeignet ist, und nicht das Ergebnis zu stark verändert? Immerhin vergeht das schon die eine bis anderen 100ms bis man die weggeklickt hat.

Ich habe das dann immer so gemacht, dass ich mir als erstes eine StringList erzeugt habe, und dort mit mittels GetTickCount einen Zeitstempel und dahinter einen Text hineingeschrieben habe.
Z.B. so sl.Add(inttostr(GetTickCount) + ': OnCreate - Enter'); am Ende der Procedure so sl.Add(inttostr(GetTickCount) + ': OnCreate - Leave'); Am Ende das ganze einfach in ein temporär angelegtes TMemo oder als Datei wegschreiben.
Die eine Zeile ist schnell an die eine oder andere Stelle kopiert und angepasst und man kann sie innerhalb der Proceduren strategisch platzieren umd Rechenintensive Abläufe zu optimieren.
Hat mir immer gute Dienste geleistet.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 16:16 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