Speed - Delay(1) ?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

junky

Betreff: Speed - Delay(1) ?

BeitragMi, März 03, 2004 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, März 03, 2004 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versteh nicht ganz was du meinst?..

Edit:

Ahso hab jetzt mal ohne Debug ausprobiert. Very Happy

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

BeitragMi, März 03, 2004 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast recht!
Ohne Delay hab ich 282ms und mit Delay 507ms! Wie seltsam!

Jolinah

BeitragMi, März 03, 2004 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Was noch seltsamer ist das es bei mir umgekehrt ist Wink

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

BeitragMi, März 03, 2004 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Rolling Eyes
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

regaa

BeitragMi, März 03, 2004 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing .
 

junky

BeitragMi, März 03, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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...

TheShadow

Moderator

BeitragMi, März 03, 2004 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ohne: 840
mit: 700
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, März 03, 2004 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, März 03, 2004 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe manchmal eher das Gefühl mit dem millisecs() stimmt was nicht Wink

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

BeitragDo, März 04, 2004 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, März 04, 2004 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Und dann zählt der Counter wieder bis Null hoch? Dann könnte man ja

Code: [AUSKLAPPEN]

Abs(Millisecs())


schreiben Rolling Eyes
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

BladeRunner

Moderator

BeitragDo, März 04, 2004 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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 ... Wink
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

BeitragDo, März 04, 2004 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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 ]

D2006

Administrator

BeitragDo, März 04, 2004 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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

TheShadow

Moderator

BeitragDo, März 04, 2004 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group