JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Geschwindigkeitsfrage

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



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 29.08.2003, 21:05    Titel: Geschwindigkeitsfrage Antworten mit Zitat

Hallo,

so aus Neugier wuerds mich mal interessieren. Wie sehr leidet die Performance eines C++ Programms unter Funktionsaufrufen?

Ich meine Gut. Das allein machts nicht, aber nehmen wir an, ich habe eine Funktionalitaet ueber mehrere (3-7 ums mal richtig reinzuhauen Wink) Funktionen verteilt, die so immer nacheinander aufgerufen werden. Ist das wesentlich schlimmer, als wenn ich alles in Einer habe?
Ich weiß, dass das jetzt rein Utopische Werte sind und in einer normalen Anwendung wohl kaum zum tragen kommt, aber nehmen wir an, es kaeme Hart auf Hart. Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 30.08.2003, 08:42    Titel: Antworten mit Zitat

Erstmal hat da noch niemand nach gefragt, also wird es wohl nicht von Bedeutung sein. Zweitens kommt es ganz auf dein Programm an. Wenn du es unbedingt wissen willst, musst du mit einem Profiler ran. ;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


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

BeitragVerfasst am: 30.08.2003, 09:37    Titel: Antworten mit Zitat

Der eigendliche Funktionsaufruf im gegensatz zu linear Programmierter (oder inline) Funktionsweise ist so gering, das er wirklich vernachlässigt werden kann.
Du übergibst den Funktionen ja wohl nicht Variablen mit Megabytegroßen Inhalten, oder? Solange es sich um ein paar Zeiger und ein paar Integer/Float-Werte handelt kann man sogar ´tausende von Funktionen aufrufen, ohne das ein merklicher Geschwindigkeitseinbruch entsteht.
Merklich war es vielleicht früher, bei 386/16Mhz-Rechnern, aber nicht mehr heute.

AFE-GmdG
_________________
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
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 05.09.2003, 21:32    Titel: Antworten mit Zitat

AFE, da muss ich dir etwas widersprechen. Wenn du ne Funktion dauernd aufrufst bei ner Framerate von 60 dann schlaucht das Programm schon. Denn das geht so, so weit ich mich nicht irre:
Das Programm springt zur Funktion und legt im Speicher ein Zeiger an, der auf die Zeile nach dem Funktionsaufruf im QUellcode zeigt und legt noch Variablen im SPeicher an und belegt sie mit den übergebenen Werten und führt dann die Operationen durch.

z.B. hier: funktion(int einInt, float einFloat);

hier bei gibt er nur die Adressen der Variablen über und muss nicht extra zwei neue Variablen neu anlegen:

z.B. hier: funktion(int &einInt, float &einFloat);

bei der zweiten Variante hatte AFE total Recht! Smile
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


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

BeitragVerfasst am: 06.09.2003, 10:30    Titel: Antworten mit Zitat

Wenn man Probleme mit der Geschwindigkeit hat, sollte man nicht unbedingt am Aufruf von Funktionen beginnen, es hat in der Regel ganz andere Probleme.
Einen Hinweis für exsessieve C++-ler:
Funktionen, die Vererbungsmechanismen und virtuelle Überschreibungen verwenden sind im Aufruf deutlich am langsamsten, da erst zur Lauzeit ermittelt wird, welche Funktion ausgeführt werden soll. Davon sollte man nicht allzu viele pro Sekunde aufrufen...
_________________
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
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 06.09.2003, 11:01    Titel: Antworten mit Zitat

Stimmt schon aber ein V-Table Lookup ist auch nicht viel anders als ein normaler Array-Lookup.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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