Sleep()
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Sleep()
Hi,
wir haben hier des öfteren über den Einsatz von Sleep() gesprochen, das dadurch eine hohe CPU Auslastung vermieden werden kann. Es kam auch der Hinweis, bei Schleifen, in denen viele DbSkip() vorhanden sind, ein Sleep(.1), oder so einzubauen.
Jetzt kommt mal wieder eine Anfängerfrage von mir: Wie ist das bei Dbeval()? Das macht doch auch einen Dbskip() wenn auch nur intern und da ist die Auslastung auch recht hoch? Sollte man da eine Funktion einbauen, oder Sleep mit reinbringen?
wir haben hier des öfteren über den Einsatz von Sleep() gesprochen, das dadurch eine hohe CPU Auslastung vermieden werden kann. Es kam auch der Hinweis, bei Schleifen, in denen viele DbSkip() vorhanden sind, ein Sleep(.1), oder so einzubauen.
Jetzt kommt mal wieder eine Anfängerfrage von mir: Wie ist das bei Dbeval()? Das macht doch auch einen Dbskip() wenn auch nur intern und da ist die Auslastung auch recht hoch? Sollte man da eine Funktion einbauen, oder Sleep mit reinbringen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Hi,
habe es gerade mal getestet, das bringt es. Allerdings bei einem Sleep(1) wird die Ablaufgeschwindigekeit nahezu halbiert, aber die Auslastung geht von 97% auf knapp 22% runter. Also alles Entscheidungssache....
habe es gerade mal getestet, das bringt es. Allerdings bei einem Sleep(1) wird die Ablaufgeschwindigekeit nahezu halbiert, aber die Auslastung geht von 97% auf knapp 22% runter. Also alles Entscheidungssache....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Hi Klaus,
ooops, das kann man auch machen? Werde ich mal gleich probieren.....
ooops, das kann man auch machen? Werde ich mal gleich probieren.....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Hi Klaus,
bringt ca. das alte Tempo wieder, bewirkt aber in der Auslastung nichts. über 95%.
bringt ca. das alte Tempo wieder, bewirkt aber in der Auslastung nichts. über 95%.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
sleep(0) ist ja im Prinzip das gleiche, wie gar kein sleep!
Aber mit sleep(0.1) oder sleep(0.01) hat man dann bessere Ergebnisse.
Viele Grüße,
Martin
sleep(0) ist ja im Prinzip das gleiche, wie gar kein sleep!
Aber mit sleep(0.1) oder sleep(0.01) hat man dann bessere Ergebnisse.
Viele Grüße,
Martin
![grommit :grommit:](./images/smilies/grommit.gif)
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Hi MArtin,
ich war mir jetzt nicht sicher, wie klein der Wert gemacht werden kann. Ich werde es einmal mit Sleep(.1) oder so testen.
ich war mir jetzt nicht sicher, wie klein der Wert gemacht werden kann. Ich werde es einmal mit Sleep(.1) oder so testen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Hallo Manfred,
fast hätte ich hier Käse geschrieben, aber der Blick ins Handbuch macht vieles klarer
:
Sleep( <nTime> ) --> NIL
Parameter
<nTime>
<nTime> ist eine positive Ganzzahl, die das Zeitintervall in 1/100 Sekunden festlegt, für das ein Thread in einen Wartezustand übergehen soll.
Also 1 = 1/100 Sek., 0.1 = 1/1000 Sek., 0.01 = 1/10000 Sek., 100 = 1 Sekunde (so schläft man dahin
)
Grundsätzlich gehen also sehr kleine Werte, aber ich denke mal, dass 0.1 so ziemlich das kleinste ist, was noch spürbare Unterschiede bringt, aber auch hier geht Probieren über Studieren![Smile :-)](./images/smilies/smile.gif)
Bei PowerBasic wird der gleiche Befehl mit einer LONG Integer aufgerufen (nur ganze Zahlen, keine Nachkommastellen), wobei dort 1/1000 als Zählwert zählt. Dort steht dass ein Timeslice zwischen 20/1000 und 128 /1000 Sekunden dauert. Somit macht es wohl keinen Sinn in Xbase++ Werte unter 0.1 zu verwenden.
Bei PowerBasic wirkt der Befehl sleep(0) übrigens so, dass der aktuelle Task zwar nicht für eine Bestimmt Zeit angehalten wird, aber der nächte Task aktiv wird. Falls das grundsätzlich im BS so geregelt ist, könnte
das auch für Xbase++ gelten.
fast hätte ich hier Käse geschrieben, aber der Blick ins Handbuch macht vieles klarer
![Wink ;-)](./images/smilies/wink.gif)
Sleep( <nTime> ) --> NIL
Parameter
<nTime>
<nTime> ist eine positive Ganzzahl, die das Zeitintervall in 1/100 Sekunden festlegt, für das ein Thread in einen Wartezustand übergehen soll.
Also 1 = 1/100 Sek., 0.1 = 1/1000 Sek., 0.01 = 1/10000 Sek., 100 = 1 Sekunde (so schläft man dahin
![Very Happy :D](./images/smilies/biggrin.gif)
Grundsätzlich gehen also sehr kleine Werte, aber ich denke mal, dass 0.1 so ziemlich das kleinste ist, was noch spürbare Unterschiede bringt, aber auch hier geht Probieren über Studieren
![Smile :-)](./images/smilies/smile.gif)
Bei PowerBasic wird der gleiche Befehl mit einer LONG Integer aufgerufen (nur ganze Zahlen, keine Nachkommastellen), wobei dort 1/1000 als Zählwert zählt. Dort steht dass ein Timeslice zwischen 20/1000 und 128 /1000 Sekunden dauert. Somit macht es wohl keinen Sinn in Xbase++ Werte unter 0.1 zu verwenden.
Bei PowerBasic wirkt der Befehl sleep(0) übrigens so, dass der aktuelle Task zwar nicht für eine Bestimmt Zeit angehalten wird, aber der nächte Task aktiv wird. Falls das grundsätzlich im BS so geregelt ist, könnte
das auch für Xbase++ gelten.
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hmm,
wenn es eine Ganzzahl sein muß, geht 0.1 als Parameter natürlich nicht.
Aber ist ja kein Problem - man kann ja auch sleep( 1 ) nehmen, aber dann halt nicht bei jedem Schleifendurchlauf, sondern nur bei jedem 10. oder jedem 100. - das entspräche ja dann in etwa 0.1 bzw. 0.01 als Parameter und ist wahrscheinlich sogar noch effektiver!
Viele Grüße,
Martin
wenn es eine Ganzzahl sein muß, geht 0.1 als Parameter natürlich nicht.
Aber ist ja kein Problem - man kann ja auch sleep( 1 ) nehmen, aber dann halt nicht bei jedem Schleifendurchlauf, sondern nur bei jedem 10. oder jedem 100. - das entspräche ja dann in etwa 0.1 bzw. 0.01 als Parameter und ist wahrscheinlich sogar noch effektiver!
Viele Grüße,
Martin
![grommit :grommit:](./images/smilies/grommit.gif)
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Rolf,
Viele Grüße,
Martin
nun - das ist ja das selbe wie sleep( 1 )Rolf Ramacher hat geschrieben:ich habe bisher immer Sleep(001) genommen.
Viele Grüße,
Martin
![grommit :grommit:](./images/smilies/grommit.gif)
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Hallo Martin,Martin Altmann hat geschrieben:Hmm,
wenn es eine Ganzzahl sein muß, geht 0.1 als Parameter natürlich nicht.
ich schrieb von PowerBasic, bei denen der Befehl als GANZZAHL angegeben werden muss. Dort stellt diese Zahl die Anzahl der Millisekunden dar, bei uns hingegen 1/100 Sekunden. Daraus schließe ich, dass 0.1 der kleinste Wert in Xbase++ ist, der unterschieden wird.
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Hubert,
das war mir nicht klar, dass Du das auch auf PowerBasic bezogen hattest.
Aber trotzdem: Bei uns ist es nicht 1/100 Sekunden, sondern n/100 Sekunden! Und auch bei uns muß n eine Ganzzahl sein (laut Onlinehilfe) - also insofern ist der kleinste (sinnvolle) Wert eine 1 und man muss es halt nur alle 10, 100 oder 1000 Durchläufe ausführen...
Viele Grüße,
Martin
das war mir nicht klar, dass Du das auch auf PowerBasic bezogen hattest.
Aber trotzdem: Bei uns ist es nicht 1/100 Sekunden, sondern n/100 Sekunden! Und auch bei uns muß n eine Ganzzahl sein (laut Onlinehilfe) - also insofern ist der kleinste (sinnvolle) Wert eine 1 und man muss es halt nur alle 10, 100 oder 1000 Durchläufe ausführen...
Viele Grüße,
Martin
![grommit :grommit:](./images/smilies/grommit.gif)
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Dass in der Onlinehilfe steht, es darf nur eine Ganzzahl sein, habe ich noch nicht gelesen. 0.1 nehme ich gerne, für den Prozessor ist das ne lange Zeit. Aber - ich bin jetzt schon mehrere Jahrzehnte nicht mehr in der Schule gewesenMartin Altmann hat geschrieben:Aber trotzdem: Bei uns ist es nicht 1/100 Sekunden, sondern n/100 Sekunden! Und auch bei uns muß n eine Ganzzahl sein (laut Onlinehilfe) - also insofern ist der kleinste (sinnvolle) Wert eine 1 und man muss es halt nur alle 10, 100 oder 1000 Durchläufe ausführen...
![Wink ;-)](./images/smilies/wink.gif)
n * 1/100 == n/100 oder irre ich da
![Wink ;-)](./images/smilies/wink.gif)
100 entspricht einer Wartezeit von einer Sekunde oder ?
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Hubert,
genau - 100 ist eine Sekunde.
Und klar ist Deine Aussage 1/100 Sekunde richtig - aber eben nur für n=1![Wink :wink:](./images/smilies/wink.gif)
Viele Grüße,
Martin
genau - 100 ist eine Sekunde.
Und klar ist Deine Aussage 1/100 Sekunde richtig - aber eben nur für n=1
![Wink :wink:](./images/smilies/wink.gif)
Viele Grüße,
Martin
![grommit :grommit:](./images/smilies/grommit.gif)
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Hallo Martin,brandelh hat geschrieben:Hallo Manfred,
fast hätte ich hier Käse geschrieben, aber der Blick ins Handbuch macht vieles klarer:
Sleep( <nTime> ) --> NIL
Parameter
<nTime>
<nTime> ist eine positive Ganzzahl, die das Zeitintervall in 1/100 Sekunden festlegt, für das ein Thread in einen Wartezustand übergehen soll.
Also 1 = 1/100 Sek., 0.1 = 1/1000 Sek., 0.01 = 1/10000 Sek., 100 = 1 Sekunde (so schläft man dahin)
Grundsätzlich gehen also sehr kleine Werte, aber ich denke mal, dass 0.1 so ziemlich das kleinste ist, was noch spürbare Unterschiede bringt, aber auch hier geht Probieren über Studieren
Bei PowerBasic wird der gleiche Befehl mit einer LONG Integer aufgerufen (nur ganze Zahlen, keine Nachkommastellen), wobei dort 1/1000 als Zählwert zählt. Dort steht dass ein Timeslice zwischen 20/1000 und 128 /1000 Sekunden dauert. Somit macht es wohl keinen Sinn in Xbase++ Werte unter 0.1 zu verwenden.
Bei PowerBasic wirkt der Befehl sleep(0) übrigens so, dass der aktuelle Task zwar nicht für eine Bestimmt Zeit angehalten wird, aber der nächte Task aktiv wird. Falls das grundsätzlich im BS so geregelt ist, könnte
das auch für Xbase++ gelten.
hier zitiere ich nochmal meinen Beitrag, oben hatte ich das Handbuch
kopiert und dort steht doch tatsächlich GANZZAHL - ich muss blind
gewesen sein
![Wink ;-)](./images/smilies/wink.gif)
Natürlich ist 1/100 Sek. die Einheit, die mit dem Parameter multipliziert werden muss ...Also 1 = 1/100 Sek., 0.1 = 1/1000 Sek., 0.01 = 1/10000 Sek., 100 = 1 Sekunde (so schläft man dahin)
ich kann nichts finden wo ich was anderes behauptet habe ...
allerdings gebe ich zu, dass ich recht fertig bin. NEIN nicht vom Sekt,
sondern vom Schuften. Samstag kamen wir auf die Idee mal was im Wohnzimmer umzustellen ...
Montag wurden wir nicht fertig, also noch Dienstag Urlaub eingereicht. Morgen Abend wirds aber bestimmt was ...
![Very Happy :D](./images/smilies/biggrin.gif)
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Hubert,
jaja - wenn man erstmal anfängt, ein wenig umzuräumen...![Rolling Eyes :roll:](./images/smilies/rolleyes.gif)
Viel Glück, dass es bald ausgestanden ist.
Was anderes hattest Du nicht wirklich geschrieben - nur unter Umständen anders "verstehbar".
Wie gesagt: Ganzzahl - also Dein zweites Zitat geht eben nicht...
Viele Grüße,
Martin
jaja - wenn man erstmal anfängt, ein wenig umzuräumen...
![Rolling Eyes :roll:](./images/smilies/rolleyes.gif)
Viel Glück, dass es bald ausgestanden ist.
Was anderes hattest Du nicht wirklich geschrieben - nur unter Umständen anders "verstehbar".
Wie gesagt: Ganzzahl - also Dein zweites Zitat geht eben nicht...
Viele Grüße,
Martin
![grommit :grommit:](./images/smilies/grommit.gif)
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.