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 4 von 5   « Erste     234 5      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#31

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 17:59
Die Lizenz für's kleine CodeSite Express ist immernoch mit dabei, wenn ich mich nicht täusche. (kann via GetIt installiert werden)
$2B or not $2B
  Mit Zitat antworten Zitat
DieDolly

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

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 19:11
Zitat:
Bei meinem XE5 war dieses "CodeSite Logging" dabei.

Zusammen mit "now" (?) irgendwann am Anfang und dann weiteren Stellen im Ablauf lasse ich mir die Zeitwerte (Differenzen) via Codesite ausspucken. So habe ich bisher alle Bremsen gefunden.
Braucht man für sowas wirklich CodeSite? NicoleWagner hat schon vor einigen Posts bewiesen, das es auch ganz anders geht.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 20:15
Irgendwie fehlt hier noch die einfachste Variante... das passiert doch auch auf dem Entwicklungs-PC:
Einfach starten und in den 3-4 Sekunden Wartezeit auf Pause drücken und dann schauen wo man dort gerade ist.

Bei so langen Verzögerungen klappt das mit ein paar Versuchen normalerweise sehr gut.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#34

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 20:50
DateTime/String (vor allem für längere Logs), GetTickCount und es git auch eine neuere Stopuhrklasse, deren Name ich immer vergesse.
TStopwatch aus System.Diagnostics.
Und für's Logging ist seit vielen Versionen CodeSite Lite dabei.
Funktioniert unter Windows ganz gut.
  Mit Zitat antworten Zitat
NicoleWagner

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

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 20:51
In meinem Fall hilft das sehr wahrscheinlich nicht, das in-den-Code-springen. Ich habe mittlerweile ein paar "verdächtige" begin / end gefunden.
Heute bin ich schon zu müde, doch ich habe den Eindruck, dass ich irgendeine Schleife zu groß gezogen habe.

Also statt
for i:1 to 1000 do begin
for j:=1 to 100 do begin end
mach-was
begin
und-dann-noch-ein-Methodenaufruf-in-Schleife
end
end
end?!

Wäre das mach-was-end irgendwohin verrutscht beim Debuggen und es wären dann 100.000 Durchläufe mehr als nötig...
Dass da oben "was" nicht stimmt, sieht jeder auf den ersten Blick. Das richtige end zu löschen, das braucht einen zweiten Blick.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#36

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 20:52
Delphi-Referenz durchsuchenTStopwatch ist eine ganz Super Sache.
Und auf jeden Fall (ich lasse mich da auf keine Diskussionen rund um Sonderfälle ein) immer #13#10.

Sherlock
In Unit System gibt's die schöne Konstante sLineBreak.Die passt auf jeder Plattform
  Mit Zitat antworten Zitat
DieDolly

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

AW: Performance: mein Programm trödelt!

  Alt 10. Jun 2020, 20:58
Delphi-Quellcode:
for i:1 to 1000 do begin
for j:=1 to 100 do begin end
mach-was
begin
und-dann-noch-ein-Methodenaufruf-in-Schleife
end
end
end?!
Zitat:
Wäre das mach-was-end irgendwohin verrutscht beim Debuggen und es wären dann 100.000 Durchläufe mehr als nötig...
Dass da oben "was" nicht stimmt, sieht jeder auf den ersten Blick. Das richtige end zu löschen, das braucht einen zweiten Blick.
Das da oben sieht richtig formatiert so aus
Delphi-Quellcode:
 for i: 1 to 1000 do
  begin
   for j := 1 to 100 do
    begin
    end
    // mach-was
    begin
     // und-dann-noch-ein-Methodenaufruf-in-Schleife
    end
  end
end ?!
Im Prinzip ist da alles falsch. Code-formatierung kann einem solche Probleme ersparen.

Richtig vielleicht so? Ich weiß ja nicht, wp du i und j verwendest
Delphi-Quellcode:
for i := 1 to 1000 do
  begin
   for j := 1 to 100 do
    begin
     // mach-was

     // und-dann-noch-ein-Methodenaufruf-in-Schleife
    end
  end;
Ab und zu STRG+D
  Mit Zitat antworten Zitat
NicoleWagner

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

AW: Performance: mein Programm trödelt!

  Alt 11. Jun 2020, 10:35
...dass das "richtig formatiert" so aussieht, wissen hier wohl viele, auch ich.
Nur war mir die Spielerei in html zu mühsam.
Dass zu sagen, ist nicht der Grund, warum ich poste.
Sondern ich poste eine Erfolgsmeldung: Ich hab's!

Es war ein "begin-end" zu wenig.
Jenes, das schlank und rank über 2 Zeilen hätte laufen sollen, ging mir in eine riesige Schleife.

Wie passiert so etwas?
Man folgt der Embacadero Richtlinie nicht, jede einzelne Zeile in begin - end einzuschließen, weil das sooo viele Codezeilen macht.
Man schreibt also:
If.... then... ;
Dann - fällt einem noch etwas ein.

Richtig wäre jetzt natürlich gewesen:

if .... then
begin
1.....;
2.....;
end;

Man schrieb aber zu später Stunde:
if then
1....;
2....;

Autsch.
Dieser 2. Befehl läuft dann durch die ganze Ober-Schleife.

Meine Anwendung startet jetzt wieder im Wimpernschlag statt in einigen Sekunden.

PS: Ich schreibe auch " s:= ' ' + #10#13 + ' '; "
Zuweilen geht das nicht und dann fand ich (glaublich sogar hier) einen Trick: Man legt ein "Label" dorthin, wo es nicht klappt und schreibt nicht auf den schlechten Untergrund, sondern aufs Label.

und PPS:
Die Zeitmessung mit "now"-Zuweisung fand die auslösende Stelle NICHT. Da mag die Code-Optimierung daran schuld sein.

Geändert von NicoleWagner (11. Jun 2020 um 10:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#39

AW: Performance: mein Programm trödelt!

  Alt 11. Jun 2020, 11:02
Man folgt der Embacadero Richtlinie nicht, jede einzelne Zeile in begin - end einzuschließen, weil das sooo viele Codezeilen macht.
Man schreibt also:
If.... then... ;
Dann - fällt einem noch etwas ein.

Richtig wäre jetzt natürlich gewesen:

if .... then
begin
1.....;
2.....;
end;
Deswegen habe ich mir angewöhnt, das generell zu machen, damit so etwas nicht passieren kann.
Man muss nicht mal etwas vergessen, sondern es kann eine nachträgliche Ergänzung sein, die mehr erfordert.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#40

AW: Performance: mein Programm trödelt!

  Alt 11. Jun 2020, 11:05
Sondern ich poste eine Erfolgsmeldung: Ich hab's!
Meine Anwendung startet jetzt wieder im Wimpernschlag statt in einigen Sekunden.

PS: Ich schreibe auch " s:= ' ' + #10#13 + ' '; "
Super, dass du dein Problem lösen konntest.

Hier noch ein Tipp zum #10#10: es gibt da in System.pas, was ja bekanntlichermaßen immer implizit eingebunden ist,
die schöne Konstante sLineBreak. Diese enthält unter Windows genau das: #13#10 und auf den anderen Plattformen
das jeweils dort standardmäßig benutzte. Nutzung der Konstante macht also den Code ein wenig mehr Multi-Plattform
kompatibel.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 12:38 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