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
Seite 5 von 5   « Erste     345   
newbe

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

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 17: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
 
#42

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 18: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
Online

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

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 18: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
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

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

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 18: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
 
#45

AW: Schleife beschleunigen sinnvoll?

  Alt 20. Jul 2013, 18: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.686 Beiträge
 
Delphi 2007 Enterprise
 
#46

AW: Schleife beschleunigen sinnvoll?

  Alt 21. Jul 2013, 00: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
EWeiss
(Gast)

n/a Beiträge
 
#47

AW: Schleife beschleunigen sinnvoll?

  Alt 21. Jul 2013, 00:50
Zitat:
Ich kenne auch im Wesentlichen nur Sleep(1) um Threads etwas CPU-freundlicher zu gestalten, wenn man sonst keine Events hat
Ich komme zu keiner lösung.
Mein problem ist mit dem Sleep funktioniert es eigentlich.. Aber!
Die volle Framrate bekomme ich aber erst wenn ich das Vollbild in den Window mode schalte dann mit
der Maus auf das Caption oder Rahmen der Masterform drücke und festhalte.

Ich hab alles schon versucht mit form.Activate(); usw..
Es scheint als wenn das aufgesetzte Usercontrol in dem sich das VisualisierungsWindow des Plugins befindet
der Masterform den Focus nimmt oder aber einige MEssagen nicht durchläßt.

sorry salop gesagt
das ist aber auch eine scheisse warum nimmt man für ein Overlay Window ein UC.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#48

AW: Schleife beschleunigen sinnvoll?

  Alt 21. Jul 2013, 23:31
Hab das problem jetzt gelößt.
Ich leite die Messagen der Plugins nicht mehr über das Handle der Anwendung um
sondern erstelle dafür intern ein eigenes Window wo das plugin dann nur noch mit meiner DLL kommuniziert.
Dafür hab ich meinen Record erweitert mit einem Flag über das bestimmt wird ob man das möchte oder nicht.

Normalerweise funktioniert das ohne das man es setzen muss aber wie hier im Fall ist es von nöten.
Das Sleep in kombination mit dem erstellten Window funktioniert prächtig.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 07:50 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