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
Delphiuser1987

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

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09: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 jfheins
jfheins

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

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09: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.376 Beiträge
 
Delphi 12 Athens
 
#3

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09: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.
Ein Therapeut entspricht 1024 Gigapeut.

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

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

AW: CPU Auslastung eines Delphi-Programms drosseln

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

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

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09:47
Hat Sleep() bei älteren Delphiversionen nicht aktiv gewartet?
Was meinst du mit "aktiv gewartet" ?

Sleep() ruft nur die entsprechende Windowsfunktion auf. Unmd die sorgt dafür, dass dem Thread die nächsten x Millisekunden keine Rechenzeit zugewiesen wird. Wenn man also Sleep(1000) aufruft, friert der Thread für 1 Sekunde ein, weil er keine Rechenzeit mehr bekommt. (dafür sorgt der Scheduler voin Windows)
Ein Sleep(0) erscheint damit im ersten Moment sinnlos. Es sorgt aber dafür, dass der Thread sofort von der CPU genommen wird und hinten in die Warteschlange kommt. Also die Abarbeitung wird vorzeitig abgebrochen und der nächste Thread kommt an die Reihe.
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 17. Jun 2010, 07:02
Hat Sleep() bei älteren Delphiversionen nicht aktiv gewartet?
Aus Sysutils.pas:

Delphi-Quellcode:
{$IFDEF MSWINDOWS}
procedure Sleep; external kernel32 name 'Sleep'; stdcall;
{$ENDIF}
Sleep() ist also aus dem Windows-API und sollte daher in allen Delphi-Versionen gleich funktionieren.
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 09: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
Delphiuser1987

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

AW: CPU Auslastung eines Delphi-Programms drosseln

  Alt 16. Jun 2010, 12:07
danke Leute, Sleep(50) hat funktioniert.
Vorher 100% jetzt 11%.
Auf euch ist halt verlass
Bis zum nächsten Mal

Gruß
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:10 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