Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi CPU Auslastung eines Delphi-Programms drosseln (https://www.delphipraxis.net/152236-cpu-auslastung-eines-delphi-programms-drosseln.html)

Delphiuser1987 16. Jun 2010 08:17

Delphi-Version: 2010

CPU Auslastung eines Delphi-Programms drosseln
 
Hi,

ich brauch mal wieder Hilfe von euch.
Ich habe ein Programm geschrieben das ständig durchläuft bis es abgebrochen wird. dazu habe ich eine while Schleife verwendet.
Es funktioniert auch ohne Probleme. Das einzige Problem dass ich habe ist, dass die CPU Auslastung bei 100% liegt.
Das ist für mich auch logisch, das Programm läuft halt so schnell durch, wie der Prozessor kann.
Jetzt zu meiner Frage: Gibt es eine Möglichkeit das Programm nur Taktweise jede paar Millisekunden durlaufen zu lassen, bzw. gibt es einen extra Baustein dafür.
Wäre für eure Hilfe sehr dankbar.
Aber bis jetzt habt ihr mich ja noch nie enttäuscht :thumb::-D

s.h.a.r.k 16. Jun 2010 08:19

AW: CPU Auslastung eines Delphi-Programms drosseln
 
Bau halt ein
Delphi-Quellcode:
Sleep(<Zeit in Millisekunden>);
ein. So lange wird an der entsprechenden Stelle dann gewartet. Das dürfte den CPU-Durst etwas senken :mrgreen:

SirThornberry 16. Jun 2010 08:20

AW: CPU Auslastung eines Delphi-Programms drosseln
 
Aus welchem Grund willst du das Programm drosseln? Ist es nicht gewünscht das dein Programm schnellst möglich arbeitet? Wenn dich stört das andere Programm während dieser Zeit weniger Rechenzeit abbekommen kannst du die Priorität deines Prozesses herab setzen. Allerdings läuft das Programm dann auch weiter mit 100% Auslastung mit dem Unterschied das andere Programm, wenn nötig mehr Rechenzeit bekommen.
Ohne zu wissen warum du die Geschwindigkeit des Programmes drosseln willst wird es schwer dir den richtigen Tipp zu geben.

Tonic1024 16. Jun 2010 08:36

AW: CPU Auslastung eines Delphi-Programms drosseln
 
IMO ist es nicht immer sinnvoll, dass ein Programm "schnellstmöglichst" arbeitet. Eine Watchdog Routine arbeitet vielleicht genau so gut wenn sie im 1.000ms oder 10.000ms Takt läuft. warum also die CPU künstlich belasten?

Delay

Das hier könnte helfen. Delay lässt den Thread "schlafen" ohne dass die App einfriert. Andere Threads arbeiten wie gewohnt weiter.

Gruß,

Toni

Delphiuser1987 16. Jun 2010 09:26

AW: CPU Auslastung eines Delphi-Programms drosseln
 
Das Programm wird auf einem Pc mit Atom-Prozessor verwendet.
Auf diesem laufen noch anderere Programme, die schon 30% Auslastung haben.
Wenn jetzt noch mein Programm läuft, funktioniert fast nichts mehr.
Das ist der Grund !

himitsu 16. Jun 2010 09:28

AW: CPU Auslastung eines Delphi-Programms drosseln
 
bei 1.000 oder 10.000 könnte man auch gleich einen Timer verwenden ... wozu da erst einen weiteren "rießigen" Thread laufen lassen, welchen das System auch noch verwalten muß.

jfheins 16. Jun 2010 09:28

AW: CPU Auslastung eines Delphi-Programms drosseln
 
Schreibe mal in die Schleife ein
Delphi-Quellcode:
Sleep(0)
das bewirkt, dass die anderen Anwendungen (falls vorhanden) mehr Rchenzeit bekommen.

himitsu 16. Jun 2010 09:31

AW: CPU Auslastung eines Delphi-Programms drosseln
 
Zitat:

Zitat von jfheins (Beitrag 1029234)
das bewirkt, dass die anderen Anwendungen (falls vorhanden) mehr Rchenzeit bekommen.

etwas anders:

Jeder Thread bekommt nacheinander Zeitfenster von ein paar Millisekunden, um zu arbeiten ... Sleep(0) gibt die Verarbeituing aber sofort ab, verkürzt damit das eigene Zeitfenster und andere Threadsa kommen somit früher/schneller wieder dran.
Aber über "längere" Zeit stimmt es quasi doch ... eigene Zeit verkürzt = für andere länger.

Um wieviel soll denn dein Programm gedrosselt werden?
Bzw. was macht denn dein Programm nun ... vielleicht kann man dieses ja anderes/optimaler lösen.
Sleep(10) bewirkt da schon sehr viel.

mkinzler 16. Jun 2010 09:34

AW: CPU Auslastung eines Delphi-Programms drosseln
 
Hat Sleep() bei älteren Delphiversionen nicht aktiv gewartet?

SirThornberry 16. Jun 2010 09:34

AW: CPU Auslastung eines Delphi-Programms drosseln
 
Zitat:

Zitat von Delphiuser1987 (Beitrag 1029231)
Wenn jetzt noch mein Programm läuft, funktioniert fast nichts mehr.Das ist der Grund !

Wenn das der Grund ist setze einfach die Priorität deines Prozesses herab.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 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