AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Threads: optimale Nutzen/Prozessorleistung-Optimierung
Thema durchsuchen
Ansicht
Themen-Optionen

Threads: optimale Nutzen/Prozessorleistung-Optimierung

Ein Thema von Thorus · begonnen am 30. Mär 2005 · letzter Beitrag vom 1. Apr 2005
Antwort Antwort
Seite 2 von 3     12 3      
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#11

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 19:02
Zitat:
100% CPU-Auslastung ist echt nicht schlimm?
Der Prozessor arbeitet doch dann die meiste Zeit unnötig und verbraucht bestimmt mehr Strom und wird auch bestimmt nicht sonderlich geschont, wenn er dauernd im Dauerbetrieb ist, oder?
Also das ist wirklich egal
Bei den meisten Spielen ist die CPU immer auf annähernd 100%.
Wenn meine CPU niemals zu 100% ausgelastet wäre, dann war sie ein Fehlkauf und ich hätte auch eine leistungsschwächere nehmen können ^^
Lukas
  Mit Zitat antworten Zitat
Michael_Bayer

Registriert seit: 20. Mär 2005
137 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 19:05
Zitat von Tubos:
Zitat:
100% CPU-Auslastung ist echt nicht schlimm?
Der Prozessor arbeitet doch dann die meiste Zeit unnötig und verbraucht bestimmt mehr Strom und wird auch bestimmt nicht sonderlich geschont, wenn er dauernd im Dauerbetrieb ist, oder?
Also das ist wirklich egal
Bei den meisten Spielen ist die CPU immer auf annähernd 100%.
Wenn meine CPU niemals zu 100% ausgelastet wäre, dann war sie ein Fehlkauf und ich hätte auch eine leistungsschwächere nehmen können ^^
Aber es ist schon ein Unterschied, ob die CPU sinnvolle oder schwachsinnige Dinge tut...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 19:35
Zitat von Thorus:
Die Prodzedur soll aber nur alle 10-15 Millisekunden ausgeführt werden. Da ist genug Zeit dazwischen, wo die Schleife unnsinnig durchlaufen wird.
Na dann mach doch ein Sleep(15) .
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Thorus

Registriert seit: 3. Jul 2004
23 Beiträge
 
Delphi 2005 Personal
 
#14

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 20:08
Sleep(15) funktioniert leider in zweilei Hinsichten nicht, wie ich oben schon geschrieben haben.

Wenn die Prozedur auf einem langsameren PC ausgeführt wird, benötigt sie vielleicht 10 ms (irgendeine ausgedachte Zahl)
Und wenn ich danach noch 15 ms warte, dann wird sie ja erst nach 25 ms wieder ausgeführt, was nicht beabsichtig ist.
Selbst auf dem langsameren PC könnte es alle 15ms ausgeführt werden. Da es aber falsch programmiert ist, geht es nicht.

Desweiteren funktionier Sleep nicht so schnell. Sleep(1) zB wartet um einiges länger als 1 ms!
Ich weiß nicht genau, wie nun der genaue Wert von Sleep ist, aber wenn ich bei mir Sleep(1) einfüge, ist es bedeutend langsamer als ohne.
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#15

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 20:12
um einen bestimmten Interval einhalten zu können, eignet sich MSDN-Library durchsuchenCreateWaitableTimer
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 20:23
Moin Thorus,

bei Sleep steht u.a.:

Zitat von PSDK - Sleep - Remarks:
...for at least the specified number of milliseconds,....
...Note that a ready thread is not guaranteed to run immediately.
Vielleicht wirst Du ja was mit MSDN-Library durchsuchenCreateEvent und MSDN-Library durchsuchenWaitForSingleObject
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Thorus

Registriert seit: 3. Jul 2004
23 Beiträge
 
Delphi 2005 Personal
 
#17

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 22:47
Zitat von Basilikum:
um einen bestimmten Interval einhalten zu können, eignet sich MSDN-Library durchsuchenCreateWaitableTimer
http://www.delphipraxis.net/internal...t.php?p=149186
Code:
hClose := CreateEvent( ??? ); // Event damit der Thread sauber beendet werden kann
  hTimer := CreateWaitableTimer(nil, false, nil);
  SetWaitableTimer(hTimer, ???);
Dort steht, dass der Timer irgendwie gar nicht gut dafür geeignet ist. Selber ausprobiert habe ich es aber nicht.

CreateEvent hat sich dann damit auch gleich erledigt wie es scheint.

Wenn man wüsste, wie zB der MediaPlayer das macht. Aber ist ja nix Open Source *g*
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#18

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 22:56
Hier im Forum suchenQueryPerformanceCounter
IMHO die beste Lösung wenn es wirklich exakt sein muss (--> bei einem Spiel).
Lukas
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#19

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 23:09
Zitat von Thorus:
Dort steht, dass der Timer irgendwie gar nicht gut dafür geeignet ist. Selber ausprobiert habe ich es aber nicht.
dort ging es aber meines Wissens um den Timer der per Window-Message gefeuert wird.
bei dem waitable Timer kannst Du in einem separaten Thread per WaitForSingleObject auf die Fälligkeit warten. Ist auf jeden Fall feiner als ein Sleep(), zudem wird das Problem von den unterschiedlichen Abarbeitungszeiten auf verschieden schnellen Rechnern gelöst. Gleichzeitig wird jedoch nicht mehr 100% CPU-load generiert...
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#20

Re: Threads: optimale Nutzen/Prozessorleistung-Optimierung

  Alt 30. Mär 2005, 23:17
Was mir auffällt...
Thorus vergisst, dass es noch einen Scheduler gibt.
Wenn du sleep(15) ausführst, wird die dir zugewiese Zeitscheibe sofort abgebrochen und der nächste Thread/Prozess bekommt eine.
Der Scheduler wird dir auch mindestens die 15ms Ruhe gönnen, die du angefordert hast. Da die ganze Verwaltung aber auch etwas Zeit kostet kannst du dir sicher sein, dass du länger wartest.
Es ist auch möglich, dass zwischen deiner Abgabe der CPU Zeit und einer erneuten Zuweisung mehrere andere threads ranwollen -> Du wartest also noch länger.

In Luckies Thread Tutorial dürfte das erklärt werden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 09:54 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