Speed - Delay(1) ?
Übersicht

junkyBetreff: Speed - Delay(1) ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi leute, bin grad auf was ganz komisches gestoßen, was ich mir nit wirklich erklären kann
Code: [AUSKLAPPEN] Graphics 1024,768,32,1 SeedRnd MilliSecs() max=100000000 ;Delay(1) starttime=MilliSecs() For a=1 To max b=c Next time=MilliSecs()-starttime SetBuffer(BackBuffer()) Repeat Cls Text 0,0,"Time: "+time If KeyHit(1) Then Exit Flip Forever End hab bei folgendem Code etwa 250 ms raus wenn ich nun aber den Code ( so wie er ist ) compilieren bekomm ich etwa 425 ms raus daraufhin hab ich einfach mal vor der Messung en Delay(1) eingefügt ( seht ihr oben kommentiert ). Ich für meinen Teil hab mit dem Delay nämlich wieder etwa 425 ms ... habsch irgendwas grad verpeilt ?! is das schon bekannt ? - wie sehen eure messungen aus ? thx schon mal ! |
||
gestern stand ich noch vorm Abgrund
heute bin ich einen Schritt weiter... |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich versteh nicht ganz was du meinst?..
Edit: Ahso hab jetzt mal ohne Debug ausprobiert. ![]() Mit dem Delay hab ich 321 Ohne Delay 577 Könnte sein das der PC noch mit was beschäftigt ist. Mit dem Delay kann er die Operation vorher noch abschliessen und danach beginnt der Test. Andernfalls beginnt der Test schon während der PC noch am Grafikmodus aufbauen ist und deswegen die Verzögerung? Ist nur spekulation *g*. Weil wenn ich das Delay noch bisschen erhöhe hab ich sogar ein paar ms weniger (317 statt 321). |
||
- Zuletzt bearbeitet von Jolinah am Mi, März 03, 2004 17:07, insgesamt einmal bearbeitet
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast recht!
Ohne Delay hab ich 282ms und mit Delay 507ms! Wie seltsam! |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was noch seltsamer ist das es bei mir umgekehrt ist ![]() Habe das Prog mal bisschen umgeschrieben, ist aber immer noch so: Code: [AUSKLAPPEN] max=100000000 ;Delay(1) Print "test beginnt, taste drücken" WaitKey() starttime=MilliSecs() For a=1 To max b=c Next time=MilliSecs()-starttime Print "test fertig, taste drücken" Print "Time: " +time WaitKey() End Ohne das Delay hab ich immer so 570ms. Mit Delay 415ms. |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne Delay: 268ms
Mit Delay: 294ms Das ist wirklich irgendwie verwirrend, zumal das Delay ja ganz am Anfang steht und somit mit der Messung gar nichts zu tun hat. Ich habe die Werte mehrmals überprüft und sie weichen höchstens mal um 3-4ms ab. Mir ist ähnliches auch schon mit dem WaitKey-Befehl aufgefallen. Wenn man den nämlich weglässt und direkt in den Test übergeht, dann verschlechtert sich immer der Messwert. In diesem Beispiel liegt er dann bei 370ms. Gleiches gilt auch, wenn ich den WaitKey-Befehl durch ein Delay von z.B. 3 sek ersetze. Habe übrigens mit einem AMD Athlon XP 1800+ unter WinXP getestet. EDIT: Wenn ich übrigens den Debugger einschalte, dauert der Test über 14 Sekunden ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, logisch ist es irgendwie nicht da der delay befehl vor dem waitkey kommt und net danach, dann könnt ichs noch verstehen , aber so....hmm lasst mal die Frage an Mark stellen, vielleicht weiß der ja bescheid ![]() |
||
junky |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
was ich ja eigentlich noch verwirrender fand, war, dass wenn des stückchen code compiliert wurde ( OHNE delay ) die geschwindigkeit bei mir auch runtergegangen ist - und zwar auf des selbe tempo wie mit delay ... | ||
gestern stand ich noch vorm Abgrund
heute bin ich einen Schritt weiter... |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ohne: 840
mit: 700 |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Print "ohne Delay";: a= b
stime=MilliSecs() :For a=1 To 100000000 : b=c : Next:Print "Time: " +(MilliSecs()-stime) Print "mit Delay":Delay(0) stime=MilliSecs() :For a=1 To 100000000 : b=c : Next:Print "Time: " +(MilliSecs()-stime) WaitKey() End egal wie man es macht es sind nie gleiche werte, aber macht mal das semikolon weg in der ersten zeile, dann stimmts wieder ist schon irritierent |
||
[BB2D | BB3D | BB+]
|
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe manchmal eher das Gefühl mit dem millisecs() stimmt was nicht ![]() Jedenfalls bei meinem Laptop hatte ich mal Probleme. Ein Spiel das millisecs() verwendete lieft nicht mehr richtig. Alles passierte ohne programmierte Verzögerung... Dann hab ich den Laptop neu gestartet und es ging wieder. Kann natürlich auch daran liegen das wenn der Laptop auf Standby ist (da ich ihn nie komplett ausschalte) evtl. die Ticks nicht zurückgesetzt werden und der Wert irgendwann einfach zu hoch für millisecs() ist. |
||
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jolinah hat Folgendes geschrieben: Kann natürlich auch daran liegen das wenn der Laptop auf Standby ist (da ich ihn nie komplett ausschalte) evtl. die Ticks nicht zurückgesetzt werden und der Wert irgendwann einfach zu hoch für millisecs() ist.
Ja, das wirds sein... Wenn Windows seit mehr als 2147483647ms gestartet ist, wird das ganze auf -2147483648ms gesetzt. Das passiert dann nach circa 25 Tagen... |
||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
- Zuletzt bearbeitet von Apocalyptic am Do, März 04, 2004 15:59, insgesamt 2-mal bearbeitet
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und dann zählt der Counter wieder bis Null hoch? Dann könnte man ja
Code: [AUSKLAPPEN] Abs(Millisecs()) schreiben ![]() |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. nach 25 tagen wenn ich mich nit sehr verrechnet hab.
2. wenn du ABS() verwendest wird millisecs() immer kleinere Angaben liefern- eine super Methode deine FPS-Schleife ins Unendliche zu dehnen ... ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
- Zuletzt bearbeitet von BladeRunner am Do, März 04, 2004 15:58, insgesamt einmal bearbeitet
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, das wird wohl nichts.
Denn dann zählt Millisecs() ja runter... [Edit:] @BladeRunner: Mein ich doch, habs verbessert... Ich hatte es erst in Stunden eingetragen (597), dann aber doch noch in Tage umgerechnet und vergessen, auch noch "Stunden" mit "Tagen" auszutauschen. D'Oh |
||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Windows 98 SE ohne Patches wird nach ungefähr 47,5 Tagen komplett abstürzen wegen eines Überlaufs der MilliSecs().
^^ Diese Tatsache deutet darauf hin, dass MilliSecs() (wie es auch logisch ist) unsigned ist und bis 4,29 Milliarden läuft. Natürlich hat BB keine unsigned und deswegen wirkt es wie ein vorzeichenwechsel. MfG |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja aber wenn es nach minus gesprungen ist, dann läuft die zeit trotzdem vorwärts - und die differenz ist weiterhin positiv... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group