AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schleife beschleunigen sinnvoll?

Ein Thema von EWeiss · begonnen am 19. Jul 2013 · letzter Beitrag vom 21. Jul 2013
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.391 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 09:47
Die Threadpriorität hat natürlich keine Auswirkungen auf deinen Anwendungsfall, denn Du gibst (ohne das sleep) dem OS überhaupt keine Gelegenheit, andere zum Zuge kommen zu lassen. Threads sind kooperativ, d.h. sie müssen 'Bescheid' geben, wann und wo sie unterbrochen werden können.
Das stimmt so nicht. Es gibt nur keine anderen, die gerade Prozessorzeit brauchen, deshalb teilt Windows diesem Thread einfach zu was da ist. Je mehr Threads mit Auslastung laufen, desto weniger Auslastung hat auch der einzelne Thread.

Solange man aber nicht kurz wartet und einfach nur alles nimmt was man bekommen kann, wird die CPU auch ausgelastet solange niemand anderes sie braucht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 16:07
Gibt es nicht doch noch ne bessere alternative als Tread.Sleep(1)
Man mag es nicht glauben aber selbst die 1 Millisekunde blockiert schon das rendern.

Also für C#..
wenn da jemand was hat wüde mich das freun

gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.391 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 16:23
Gibt es nicht doch noch ne bessere alternative als Tread.Sleep(1)
Man mag es nicht glauben aber selbst die 1 Millisekunde blockiert schon das rendern.
Naja, warum ist es denn ein Problem, wenn die CPU Auslastung dadurch steigt? Wenn schon das blockiert, bedeutet das doch, dass die Rechenzeit auch benötigt wird. Du kannst doch dann einfach die Priorität herunterstellen, damit andere Programme nicht behindert werden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 16:36
Gibt es nicht doch noch ne bessere alternative als Tread.Sleep(1)
Man mag es nicht glauben aber selbst die 1 Millisekunde blockiert schon das rendern.
Naja, warum ist es denn ein Problem, wenn die CPU Auslastung dadurch steigt? Wenn schon das blockiert, bedeutet das doch, dass die Rechenzeit auch benötigt wird. Du kannst doch dann einfach die Priorität herunterstellen, damit andere Programme nicht behindert werden.
Das habe ich doch schon gesagt das es mit der Priorität nicht funktioniert selbst wenn ich sie auf die niedrigste stufe stelle.
Ich glaube das ich für das problem einen Multimediatimer benötige da dieser auch im nano bereich arbeitet.
Die 1 Millisekunde ist einfach noch zu viel.

Beim Thread ohne Pause ist es zu schnell so das andere prozesse dadurch behindert werden.
Aber diese geschwindigkeit wäre korrekt wenn das blockieren nicht wäre.
Das ist mein problem

gruss

Geändert von EWeiss (20. Jul 2013 um 16:39 Uhr)
  Mit Zitat antworten Zitat
newbe

Registriert seit: 14. Okt 2008
143 Beiträge
 
Delphi 7 Personal
 
#5

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 16:59
@EWeis

Was macht den Thread.Sleep(0) ????

haste das mal probiert? Sieht komisch aus hab ich aber häufiger schon gesehn und verbrät auch etwas Zeit.

Gruß newbe
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 17:03
@EWeis

Was macht den Thread.Sleep(0) ????

haste das mal probiert? Sieht komisch aus hab ich aber häufiger schon gesehn und verbrät auch etwas Zeit.

Gruß newbe
Hab ich schon versucht.
Ist das gleiche als wenn ich kein Sleep verwende.

Wenn ich mein Plugin für Winamp über meinen Wrapper mit einer Delphi Anwendung über Timer laufen lasse hab ich 7% CPU
In .NET im Thread 45% (ohne Sleep) das kann es nicht sein.
das sind halt die probleme wenn man mit while do und konsorte arbeitet.


gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.391 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 17:04
Ich glaube das ich für das problem einen Multimediatimer benötige da dieser auch im nano bereich arbeitet.
Die 1 Millisekunde ist einfach noch zu viel.
ZwDelayExecution geht wohl bis runter auf 100 Nanosekunden oder so.

Beim Thread ohne Pause ist es zu schnell so das andere prozesse dadurch behindert werden.
Wie hast du das denn getestet, dass da etwas behindert? Hast du mehrere Threads mit normaler Priorität und einer Endlosschleife laufen lassen?
Bisher hast du nur geschrieben, dass die CPU Auslastung hochgeht, was aber ja erst einmal nichts damit zu tun hat andere Prozesse zu behindern.

Was macht den Thread.Sleep(0) ????
Das ruft das normale Sleep von Windows auf, siehe Quelltext...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#8

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 17:06
Also ich würde auch sagen, dass NamenLozer und Furtbichler schon Recht damit haben könnten, dass das Problem tatsächlich eher anders gelöst werden sollte. Vielleicht wäre es sinnvoller noch genauer (Code?) zu beschreiben was dieser Thread macht.

Ansonten probier mal 0 als Paramter. Sleep(0) führt lediglich einen Kontextwechsel durch. Aber ich denke nicht dass es etwas ändern wird.
Roter Kasten: Okay, hast du wohl schon.

Sleep(0) bewirkt eigentlich aber nicht das gleiche wie gar kein Sleep. Üblicherweise verursacht es einen Kontextwechsel des Prozess-Schedulers.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 17:09
Zitat:
Wie hast du das denn getestet, dass da etwas behindert? Hast du mehrere Threads mit normaler Priorität und einer Endlosschleife laufen lassen?
Bisher hast du nur geschrieben, dass die CPU Auslastung hochgeht, was aber ja erst einmal nichts damit zu tun hat andere Prozesse zu behindern.
Das merke ich daran das die hauptanwendung den Focus verliert.
Wenn ich Mediaportal im fenstermodus starte und anschließend mit der maus auf das Caption der Anwendung klicke
und diese Festhalte dann läuft die Vis in Realzeit und die CPU-Last geht runter.

gruss
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 23:38
Ich kenne auch im Wesentlichen nur Sleep(1) um Threads etwas CPU-freundlicher zu gestalten, wenn man sonst keine Events hat, auf die man warten könnte. Hast du wirklich keine Möglichkeit den VSync abzuwarten? Das wäre gerade für einen Render-Thread einfach die Lösung. Schneller zeichnen als der Monitor das Bild malt bringt einfach nichts, ausser Tearing-Effekte, die eigentlich keiner so wirklich mag.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 21:23 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