![]() |
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 |
AW: CPU Auslastung eines Delphi-Programms drosseln
Bau halt ein
Delphi-Quellcode:
ein. So lange wird an der entsprechenden Stelle dann gewartet. Das dürfte den CPU-Durst etwas senken :mrgreen:
Sleep(<Zeit in Millisekunden>);
|
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. |
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?
![]() Das hier könnte helfen. Delay lässt den Thread "schlafen" ohne dass die App einfriert. Andere Threads arbeiten wie gewohnt weiter. Gruß, Toni |
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 ! |
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ß.
|
AW: CPU Auslastung eines Delphi-Programms drosseln
Schreibe mal in die Schleife ein
Delphi-Quellcode:
das bewirkt, dass die anderen Anwendungen (falls vorhanden) mehr Rchenzeit bekommen.
Sleep(0)
|
AW: CPU Auslastung eines Delphi-Programms drosseln
Zitat:
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. |
AW: CPU Auslastung eines Delphi-Programms drosseln
Hat Sleep() bei älteren Delphiversionen nicht aktiv gewartet?
|
AW: CPU Auslastung eines Delphi-Programms drosseln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz