Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CPU-Auslastung bei Berechnungen regeln (https://www.delphipraxis.net/36972-cpu-auslastung-bei-berechnungen-regeln.html)

DarkLord0 28. Dez 2004 21:19


CPU-Auslastung bei Berechnungen regeln
 
Hallo,

Ich brauche eine Möglichkeit, die CPU-Auslastung, die eine Anwendung während Berechnungen verursacht, zu regeln, also reduzieren zu können. Wenn ein Programm beispielsweise sehr viele Berechnungen durchführen muss (oder z.B. eine große Datei schreibt), die ein paar Minuten dauern, verursachen solche Programme bei mir immer 98bis99 % CPU-Auslastung. Das Programm selbst reagiert dabei überhaupt nicht mehr und das ganze System wird verlangsamt. Ich habe schon versucht die Priorität des ganzen Programmes mit SetPriorityClass runterzuregeln, aber das hat nichts genützt.
Ich benutze Delphi 6.

tia,
DarkLord0

Tubos 28. Dez 2004 21:46

Re: CPU-Auslastung bei Berechnungen regeln
 
Zitat:

Ich habe schon versucht die Priorität des ganzen Programmes mit SetPriorityClass runterzuregeln, aber das hat nichts genützt.
Das sollte aber funktionieren!
Wenn du die Priorität herabsetzt, lastet das Programm wenn es alleine ist weiterhin die CPU voll aus, aber sobald ein anderes Programm Rechenzeit benötigt bekommt es den Vorzug.

Joe24 28. Dez 2004 22:12

Re: CPU-Auslastung bei Berechnungen regeln
 
Versuch mal diesen Befehl in die Prozessorlastige Methode einzubauen,
evtl. direkt in die Schleifen, falls vorhanden.

Delphi-Quellcode:
Application.Processmessages;

Luckie 28. Dez 2004 22:17

Re: CPU-Auslastung bei Berechnungen regeln
 
Das wird an der Situation nichts ändern. Die Methode Processmessages sorgt nur dafür, dass Nachrichtenschlange abgerabeitet wird.

Wie Tubos schon gesagt hat, wenn der Prozess alleine läuft, wird er immer ca. 99% der Rechenzeit bekommen, wenn man ihn nicht bremst mit MSDN-Library durchsuchenSleep. Aber warum sollte man das tun? Überlegen, ob man was falsch gemacht hat, sollte man nur, wenn er keine Rechenzeit abgibt, wenn andere Prozesse sie benötigen. An der Priorität würde ich nichts ändern. In das Scheduling von Wiondows eingreifen, bringt selten was.

DarkLord0 28. Dez 2004 23:02

Re: CPU-Auslastung bei Berechnungen regeln
 
das wichtigste problem ist ja, dass die anwendung selbst nicht mehr reagiert.
wenn ich beispielsweise die berechnungen durch das klicken auf einen button auslösen lasse,
wird der button weiterhin heruntergedrückt dargestellt, bis die berechnung fertig ist. das programm empfängt zwar andere (z.B. onClick) events, arbeitet diese aber erst ab, nachdem die berechnung beendet ist. das programm wird also quasi "eingefroren" (wobei änderungen, die durch die buttonclick prozedur selber gemacht werden, trotzdem dargestellt werden).
Der Ansatz mit Application.Processmessages; hat übrigends leider auch nicht geholfen

Luckie 28. Dez 2004 23:06

Re: CPU-Auslastung bei Berechnungen regeln
 
Zitat:

Zitat von DarkLord0
Der Ansatz mit Application.Processmessages; hat übrigends leider auch nicht geholfen

Das sollte aber dein Fenster wieder reagieren lassen. Besser wären allerdings Threads.

Tubos 28. Dez 2004 23:11

Re: CPU-Auslastung bei Berechnungen regeln
 
Die beste Lösung sind sicherlich Threads.
Luckie hat da ein tolles Tutorial geschrieben: http://www.luckie-online.de/Tutorials/

DarkLord0 28. Dez 2004 23:13

Re: CPU-Auslastung bei Berechnungen regeln
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von DarkLord0
Der Ansatz mit Application.Processmessages; hat übrigends leider auch nicht geholfen

Das sollte aber dein Fenster wieder reagieren lassen. Besser wären allerdings Threads.

Sorry, da hatte ich einen Fehler gemacht. Ich habe den Befehl nochmal in *alle* wichtigen Schleifen geschrieben und jetzt reagiert das programm wieder.
danke, joe24, das war genau das, was ich gesucht habe :)

Luckie 28. Dez 2004 23:16

Re: CPU-Auslastung bei Berechnungen regeln
 
ABER: Das ist nicht das Allheilmittel! Erstens macht dein Programm so lange niuchts, wie es Nachrichten von Windows Bekommt. Schieb es mal andauernt hin und her und du wirst sehen, was ich meine. Und zweitens kann das ungeahnte Nebeneffekte haben. Threads wären wohl wirklich die bessere und sauberere Lösung.

DarkLord0 29. Dez 2004 00:00

Re: CPU-Auslastung bei Berechnungen regeln
 
was könnten das denn für "ungeahnte nebeneffekte" sein, bzw wo würden die herrühren ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 Uhr.
Seite 1 von 2  1 2      

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