AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi CPU Auslastung eines Delphi-Programms drosseln
Thema durchsuchen
Ansicht
Themen-Optionen

CPU Auslastung eines Delphi-Programms drosseln

Ein Thema von Delphiuser1987 · begonnen am 16. Jun 2010 · letzter Beitrag vom 17. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
Delphiuser1987

Registriert seit: 29. Apr 2010
31 Beiträge
 
#1

CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09:17
Delphi-Version: 2010
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
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09:19
Bau halt ein Sleep(<Zeit in Millisekunden>); ein. So lange wird an der entsprechenden Stelle dann gewartet. Das dürfte den CPU-Durst etwas senken
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09:20
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's

Geändert von SirThornberry (16. Jun 2010 um 09:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#4

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09:36
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
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?

Geändert von Tonic1024 (16. Jun 2010 um 09:39 Uhr) Grund: Quellcode durch Link auf die codeLib ersetzt
  Mit Zitat antworten Zitat
Delphiuser1987

Registriert seit: 29. Apr 2010
31 Beiträge
 
#5

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 10:26
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 !
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 10:28
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ß.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 10:28
Schreibe mal in die Schleife ein
Sleep(0) das bewirkt, dass die anderen Anwendungen (falls vorhanden) mehr Rchenzeit bekommen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 10:31
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.
$2B or not $2B

Geändert von himitsu (16. Jun 2010 um 10:34 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 10:34
Hat Sleep() bei älteren Delphiversionen nicht aktiv gewartet?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 10:34
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:43 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