JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3a1109c4a5b673a133edc6051144b247Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Performance Problem IF Abfragen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
RayJunx
JLI'ler


Alter: 44
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 16:36    Titel: Performance Problem IF Abfragen Antworten mit Zitat

If schleifen verbrauchen bei mir eine Menge Rechenzeit in der ich unzählbare andere Rechenoperationen stattdessen ausführen könnte.
ich habe nun zwei fragen zu dem thema:

1) Gibt es andere Möglichkeiten eine IF funktion zu ersetzen. durch eine
schnellere variante?

2) warum dauert das eigentlich so lange? im vergleich zu anderen operationen?

grüße an alle
Rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 16:43    Titel: Antworten mit Zitat

Was verstehst du unter "if - Schleifen" ? Confused
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
RayJunx
JLI'ler


Alter: 44
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 17:09    Titel: ups Antworten mit Zitat

sorry für die schwammige ausdrucksweiße
ich meinte keine schleifen ansich,
ich mein jedes durchführen einer if abfrage ansich kostet proportional sehr viel zeit im vergleich zu x = c * y++ ; oder son kram
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OLiver
Super JLI'ler


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 17:13    Titel: Antworten mit Zitat

Zitat:

ich mein jedes durchführen einer if abfrage ansich kostet proportional sehr viel zeit im vergleich zu x = c * y++ ; oder son kram


Hast du das gemessen bzw. wie? Rolling Eyes
Ein Vergleich wird in der Regel mit den Maschinenbefehlen cmp und jnz oder irgend nen anderes jump übersetzt, aber warum das langsam sein soll?
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 18:01    Titel: Antworten mit Zitat

Arbeitest du eventuell mit besonderen Datentypen, welche du vergleichst? Ein normaler Int, Float oder Pointervergleich wird in 2 bis 3 kleine Maschinenbefehle übersetzt - das ist definitiv nicht langsam.
Der Vergleich von z.B. 2 Klassen, welche z.B. die == ode != - Operatoren überschreiben ist jedoch sehr viel Kostspieliger... Kommt dann nch (virtuelle) Vererbung dieser Operatoren hinzu ist klar, wo der Speed bleibt. Aber wenn du nicht tausende von vergleichen Pro Sekunde durchführen musst, sollte dies ebenfalls nicht der FLaschenhals sein, an dem du optimieren müsstest.
Ob du die Vergleiche dann aber anders regeln könntest hängt natürlich vom Vergleichsalgorithmus ab.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
FH
Super JLI'ler


Alter: 37
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 21:20    Titel: Antworten mit Zitat

Also: cmp (der Vergleich) ist an sich nicht gerade der schnellste Befehl... Im Gegensatz zu inc (erhöhen der Variable um 1) add (addieren) ist cmp ziemlich lahm. Aber so wie du das beschreibst, frisst der Rechenzeit. Du müsstest mal sagen, was du unter "lange" verstehst, und um wieviel langsamer er als andere Befehle ist.
Wenn du natürlich spezielle Datentypen nutzt, sieht das schon anders aus (sie AFE-GmdG).
Ansonsten gibt es ein paar Assembler-Tricks für Vergleiche, aber die lassen sich lange nicht überall einsetzen, und der Compiler nutzt die in der Release-Version eigentlich auch konsequent.
Gruß

FH
_________________
goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 26.01.2006, 21:29    Titel: Antworten mit Zitat

Bist du sicher das die If-Abfragen das Bottleleck sind? Hast du dein Programm schonmal profiliert?
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
RayJunx
JLI'ler


Alter: 44
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 27.01.2006, 16:05    Titel: irrtum Antworten mit Zitat

Hi!
offensichtlich warmein erster eindruck falsch.
ich hatte es in einem kompletten Programm gemerkt und durch
verschachteln und aussparen der if anweisungen wesendlich
performance herausgeholt wärend normale rechenoperationen
vergleichsweiße nicht ins gewicht fielen. so kam es mir zumindest
vor. gestern habe ich im detail einige schleifen alleine laufen lassen
und verglichen wie lange verschiedene anweisungen brauchen.
Resultat. IF braucht nicht wesendlich länger oder kürzer wie andere
rechenoperationen. keine ahnung wo nun der hund kam.
vielleicht stoße ich mal wieder darauf
aber danke für eure statements
grüße an alle
rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum