AGB  ·  Datenschutz  ·  Impressum  







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

Quelle hoher Prozessorauslastung ermitteln

Ein Thema von Sven M. · begonnen am 15. Okt 2013 · letzter Beitrag vom 21. Okt 2013
Antwort Antwort
Seite 2 von 2     12   
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#11

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 15. Okt 2013, 15:41
Eure Tipps sind ja nicht schlecht, aber sie beantworten nicht die Frage des OP. Mich wundert es, dass hier noch niemand das Stichwort „Profiler“ in den Raum geworfen hat. Für Delphi gibt es da den kostenlosen SamplingProfiler, der hat mir immer gereicht.

(Man muss aber unbedingt vom Compiler eine ausführliche MAP-Datei erzeugen lassen (geht in der Projektoptionen), sonst kann man nicht viel daraus ablesen)

Geändert von Namenloser (15. Okt 2013 um 15:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 15. Okt 2013, 16:26
Mich wundert es, dass hier noch niemand das Stichwort „Profiler“ in den Raum geworfen hat.
Hatte ich...
Ansonsten blieben noch Profiling Tools wie AQTime.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 16. Okt 2013, 07:13
Zitat:
Nun habe ich allerdings das Problem, dass anfangs alles einwandfrei funktioniert, mit steigender Laufzeit jedoch immer längere Perioden auftreten, die den Prozessor zu 100% auslasten.
Wie man sieht, klettert die CPU-Last im laufe von Tagen immer weiter. Das schreit geradezu nach dem von mir beschriebenen Phänomen und darum empfahl ich auch, erstmal dort nachzuschauen. Das geht sicher schneller, das den Profiler nun 8 Tage mitlaufen zu lassen und dann das gleiche zu erkennen
  Mit Zitat antworten Zitat
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#14

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 16. Okt 2013, 15:03
Stress. Stress Stress. Daher komme ich erst jetzt dazu, zu antworten. Hier ging's ja in der Zwischenzeit schon gut zur Sache.

Aus Zeitmangel, nehmt's mir nicht übel, in Kurzform:

1. Ja, es ist mein Programm. Das geht aus dem Taskmanager hervor.
2. Listen können es eigentlich auch nicht sein. Alle aufgenommenen Daten werden in ClientDatasets abgespeichert.
3. Die Profiling- und Log-Tools werde ich mir mal näher ansehen.
  Mit Zitat antworten Zitat
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#15

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 17. Okt 2013, 09:31
Okay, vielen Dank schonmal an alle bis hierhin.
Ich bin leider noch nicht dazu gekommen, mir die Profiler und Logger anzuschauen. Trotzdem bin ich immerhin einen Schritt weiter.
Denn ich habe testweise einfach mal meine Routine zum Schreiben der Daten in die Datasets (die mit einer TLineSeries im DBChart verbunden sind) auskommentiert. Und siehe da: Keine Probleme mehr.

Delphi-Quellcode:
  if not FCDSTemperatur.Active then
  begin
    FCDSTemperatur.Open;
  end;
  FCDSTemperatur.Edit;
  FCDSTemperatur.Append;
  FCDSTemperatur.FieldByName('Zeitstempel').AsDateTime:=now;
  FCDSTemperatur.FieldByName('Wert').AsFloat:=FTemperatur;
  FCDSTemperatur.Post;
  FCDSTemperatur.SaveToFile;
Mach ich hier irgendwas Grundlegendes falsch, das die lange Rechenzeit verursacht?


edit:
Der Ordnung wegen eher eine Sache für einen neuen Thread?

Geändert von Sven M. (17. Okt 2013 um 10:09 Uhr)
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 17. Okt 2013, 10:10
Ich sehe da zwei potentielle Kandidaten.

1. Das FCDSTemperatur.Open Wird dieser Dataset immer wieder geschlossen und neu geöffnet, wird immer wieder der komplette Datenbestand aus dem Speicher geworfen und neu eingelesen. Mit steigender Datenmenge dauert dieses neu einlesen immer länger.

2. FCDSTemperatur.SaveToFile Natürlich dauert mit wachsendem Datenumfang das Wegschreiben des ganzen Datenbestands immer länger. Allerdings denke ich ist ClientDataSet clever genug, nur das allerneueste in die Datei zu speichern.

Ich tippe also auf ersteres und ich würde diese beiden Stellen einfach mal genauer untersuchen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 17. Okt 2013, 10:34
Es macht keinen Sinn ein TClientDataSet an dieser Stelle zu benutzen. Bei dem SaveToFile wird jedesmal die komplette Datenmenge in die XML Datei geschrieben. Dass das nicht gerade schnell ist, sollte klar sein.

Das einzig sinnvolle ist eine Embedded Datenbank, ob nun SQLite, Firebird Embedded oder MS SQL Embedded spielt dabei keine große Rolle. Da du ja (hoffentlich) nur von diesem einen Programm auf die Daten zugreifst, reicht eine Embedded Datenbank ohne echten Datenbankserver vollkommen aus.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#18

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 21. Okt 2013, 08:03
Ja, das ist logisch. Bin allerdings, ebenso wie Olaf, davon ausgegangen, dass nur die neuen Datensätze weggeschrieben werden. Schade.

Gibt's zu den Embedded DBs irgendwo einsteigerfreundliche Tutorials? Bin leider noch nirgends fündig geworden.

Vielen Dank bis hierher!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 21. Okt 2013, 09:04
Gibt's zu den Embedded DBs irgendwo einsteigerfreundliche Tutorials? Bin leider noch nirgends fündig geworden.
Gibt es, ja. Erst einmal die Zugriffskomponente:
http://sqlite4delphi.sourceforge.net/
Und ein Tutorial:
http://www.delphi-treff.de/tutorials...r-fuer-delphi/

Selbst kenne ich beides nicht (ich habe immer dbExpress genutzt und nun FireDAC, aber das hast du nicht), habe aber viel Gutes darüber gelesen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#20

AW: Quelle hoher Prozessorauslastung ermitteln

  Alt 21. Okt 2013, 13:58
Moah, ich brauch' Urlaub, kann nicht mal mehr anständig googeln...

Recht herzlichen Dank!
Ich fuchs' mich da mal rein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

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