if schleifen performance fresser ?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

BananaSalat

Betreff: if schleifen performance fresser ?

BeitragMi, Aug 09, 2006 1:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich wollte fragen ob if schleifen performance beeinträchtigen können.

Ich hab jetzt schon ziemlich viele schleifen in meinem rpg z.b. für levelabfrage, für sprechen mit npc, etc etc

bis jetzt läufs immernoch perfekt ohne einbusen bei performance

also wollt ich mal so profosrisch fragen obs auswirken auf die performance hat Wink da ich noch einge mehr an if schleifen benötigen werde

D2006

Administrator

BeitragMi, Aug 09, 2006 1:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Also IF _Schleifen_ sind mir neu. IF Abfragen beeinträchtigen an sich die Perfomance nicht. Wobei das natürlich drauf ankommt, was abgefragt wird. Wenn im Vergleich 5 mal SQR vorkommt, könnte es ein bissl bremsen. Wink
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

BananaSalat

BeitragMi, Aug 09, 2006 2:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah cool, danke für die schnelle antwort Wink
Jops hab mich vertan meinte if abfragen Wink

SpionAtom

Betreff: Re: if schleifen performance fresser ?

BeitragMi, Aug 09, 2006 9:47
Antworten mit Zitat
Benutzer-Profile anzeigen
BananaSalat hat Folgendes geschrieben:
ohne einbusen

Zwei sind auch besser Very Happy

Nein, einzelne If-Abfragen selbst sind ungefährlich. Unter Laufzeittechnischen Gründen machen sie sogar gar nichts aus.
Wie schon angesprochen sind gewisse mathematische Funktionen sowie das Zeichnen von Text und Primitives bremsend, nach meiner Erfahrung.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Jan_

Ehemaliger Admin

BeitragMi, Aug 09, 2006 10:28
Antworten mit Zitat
Benutzer-Profile anzeigen
eine if abfrage sind ca. 3-5 Takte im CPU
meiner hat 3ghz
--> 3000mhz
--> 3mio Khz
--> 3 millarden hz
--> 3millarden Takte pro sekunde
--> 1 millarden If abfragen pro sekunde
--> bei 100 FPS - 10 millionen IF abfragen pro schleifendurchlauf
+ paar sachen zusammen rechnen usw. 1 Millionen IF abfragen bei 100 FPS Pro Hauptschleife

Du solltest auf jedenfall sie Staffeln und intelligent benutzten,
weil andere sachen auch geschwindigkeit brauchen.
und die Berechnung und abfrage externer Werte dauert auch.
Sauber und gut Programmiert sollten 1 - 100 Mio If abfragen funktionieren (natürlich geschachtelt)
between angels and insects

BananaSalat

BeitragMi, Aug 09, 2006 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
SpionAtom, XD .... ja war immerhin 2 uhr nachts Razz

Danke für die vielen antworten Wink

Ich hätte da noch eine kleine Frage die jetzt aber nicht auf den threadtitel zurück geht.
Und zwar ist die laufgeschwindigkeit meines characters inrdwie immer fps abhängig, also sinds nur 30 fps läuft er langsam .. sinds aber 60 fps läuft er normal .... , so weit so gut ist klar bei 30 fps ist das voll normal das alles langsam läuft. Aber irndwie werd ich das gefühl nicht los das wenn da jetzt kein fps limiter auf 60 wär würde mein character durch die gegend flitzen wie speedy conzales.

PS: ich hab gar keinen fps limiter eingebaut .... is bei blitz einer automatisch drinne ?

5k41

BeitragMi, Aug 09, 2006 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
jo er nennt sich vsync und ist der zusatz parameter vom befehl flip! Zu deinem Problem: Beschäftige dich mal mit Frameunabhänigrer programmierung! Das ist was du suchst!

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Jan_

Ehemaliger Admin

BeitragMi, Aug 09, 2006 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt 2 Möglcihkeiten

1. b=Createtimer(60) mit Waittimer(b) im zusammenspiel
2. du misst die zeit wie lange ein schleifen durchlauf braucht
Code: [AUSKLAPPEN]
t1=t2
t2=millisecs()
SchleifenDurchlaufZeitInMillisecks=t2-t1


und multiplizierst alle Bewgungen damit.

Dann ist alles immer geichschnell
egal ob 5 FPS oder 500 FPS
between angels and insects

BananaSalat

BeitragMi, Aug 09, 2006 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
So hab mich ein wenig umgeschaut und schlau gemacht Wink

und bin jetzt soweit das ich das ganze verstehe *freu*

Hab das ganze ein wenig anders gemacht:

Code: [AUSKLAPPEN]


Repeat
t1=millisecs()

Flip
t2=t1-millisecs()

Until keyhit(1)



Ist das so richtig ?

Nun macht mein character speedy conzales auf jeden fall konkurenz und flitzt nur so durch das level, falls ich die bewegunswerte die ich vorher hatte nicht umänder.

XD und komischer weise läuft er statt vorwärts jetzt rückwärts und anders rum.

Hab ich irgendwas falsch gemacht oder ist das normal ? Rolling Eyes

5k41

BeitragMi, Aug 09, 2006 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
erstmal muss t2=t1-millisecs() t2=millisecs()-t1 heißen und zweitens ist der wert an sich egal! Du kannst den wert nun wenn es zu schnell ist durch jeden belibigen wert teilen, bis die geschwindigkeit deiner gewünschten entspricht! Wichtig ist das du nur teilst nicht subtrahierst oder addierst!

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

BananaSalat

BeitragMi, Aug 09, 2006 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohje Surprised das hätte ich eigentlich auch herausfinden können XD
*brettvormkopf*

Danke an alle für die Hilfe habs jetzt ordentlich hingekricht Very Happy

Finds cool das ihr so noobies wie mir blitz verständlicher macht Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group