JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Ein paar Fragen zur Geschwindigkeit
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 26.07.2004, 19:48    Titel: Ein paar Fragen zur Geschwindigkeit Antworten mit Zitat

Also: Wie viel Zeit beansprucht es, eine Variable anzulegen? Also ist es schneller eine Variable einer Klasse direkt in der Klasse zu erstellen, oder erst in einer Methode der Klasse? Gibt es da einen Unterschied?

Und stimmt es, das Teilen langsamer als multiplizieren ist?
also 10*0,5 schneller als 10/2 ?

Ist zwar bestimmt nicht viel, aber wenn mans überall macht, könnte das schon ein bischen die Geschwindigkeit steigern.
_________________
https://jonathank.de/games/
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: 26.07.2004, 19:58    Titel: Antworten mit Zitat

Du brauchst dir in den meisten Fällen um solche Dinge keine Gedanken machen weil dass der Compiler für dich optimiert. Erst programmieren, dann profilen und DANN optimieren, sonst machst du dir nur unnötig Arbeit.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 26.07.2004, 20:09    Titel: Antworten mit Zitat

ok thx
ich denke mal bei den heutigen Geschwindigkeiten macht das eh nicht soo den großen Unterschied. Es ist wohl wichtiger effiziente Algorithemn zu entwickeln, als diese bis ins letzte Detail zu optimiern.
_________________
https://jonathank.de/games/
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: 26.07.2004, 20:11    Titel: Antworten mit Zitat

Das mit dem Multiplizieren dürfte stimmen! Very Happy
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 26.07.2004, 20:13    Titel: Antworten mit Zitat

Hazel hat unbedingt recht. Eine Ergänzng noch. Wenn du irgendwo x = 10 / 2; oder t = 10 * 0.5; im Code hast, wir der Compiler das sowieso vorher berechnen. Das gilt für alle Codeteile, bei denen die Wert von sofort berechner werden können.

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 26.07.2004, 20:15    Titel: Antworten mit Zitat

Variablen die auf dem Stack angelegt werden benötigen soweit ich weiß fast garkeine Zeit (der Stack pointer muss doch nur erhöht werden, richtig?).
Es kann natürlich noch zeit für konstruktoren benötigt werden, aber das dürfte auch nicht soviel sein. Anders ist es, wenn du per new Speicher vom Heap anforderst. Das kann unter umständen schon etwas "länger" dauern. Zudem lohnt sich der Heap nur für große Objekte (es sei denn du verwaltest die kleinen objekte effizient mit einem eigenen memory manager), ansonsten wird er zu stark fragmentiert.

Aber wie Hazel bereits sagte:
Die meisten mini-optimierungen lohnen sich überhaupt nicht bzw optimiert der compiler. Du solltest eher darauf achten, dass der Code übersichtlich und Bugfrei ist. Optimieren sollte man nur an bestimmten schlüsselstellen.
_________________
Kochen ist ein NP-schweres Optimierungsproblem.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 26.07.2004, 23:43    Titel: Antworten mit Zitat

Ja, also um solche Sachen sollte man sich in der Regel keine Gedanken machen. Manchmal(eher selten) hilft es einem noch wenn man mal ein wenig shiftet statt einfache Punktrechnung zu verwenden(wobei ich mir fast vorstellen könnte, das der compiler das in entsprechenden Fällen auch automatisch macht.
Wirklich den Code zu optimieren bringt auch nur etwas wenn du zB eine starke 3D-Engine hast und aus ihr das maximum heraus holen willst, da kann man denn zB die Matrizen Rechungen etc. mit inline asm und SSE/3DNow! optimieren, oder alles was sehr oft gebraucht wird und durch irgendwelche trigonometrischen Funktion etwas langsamer ist. Aber: DEN Leistungsschub bringt das auch nicht, eher sollte man darauf achten dass man mit den texturen gut umgeht, also dass sie nicht zu groß sind, oder dass man unnötige Daten über den Bus schickt(zB durch dauerndes hin-und her switchen der Textur). Oder das man zB die Vertices einer Heightmap für die Kollisionserkennung nicht aus dem VRAM(also aus den Vertexbuffer) liest, sondern man sich ne Kopie im SysRam macht usw.
Wenn du dann alles oben genanntes getan hast und vieles mehr, dann kannst du vielleicht mal daran denken irgendwas in der Art, wie du oben beschreibst, im Code zu verändern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



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

BeitragVerfasst am: 27.07.2004, 05:28    Titel: Antworten mit Zitat

Stimmt! Selber sollte man wirklich nicht soviel optimieren. Hab von nem Informatiker erfahren das z.B. Die Professional Version von VC viel besser optimiert als die Standard Version! Very Happy
_________________
The source of all power is in its destiny...
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: 27.07.2004, 07:38    Titel: Antworten mit Zitat

TheMillenium hat Folgendes geschrieben:
Stimmt! Selber sollte man wirklich nicht soviel optimieren. Hab von nem Informatiker erfahren das z.B. Die Professional Version von VC viel besser optimiert als die Standard Version! :D


Das steht sogar in der MSDN und man kann einstellen wie er optimiert.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kaiserludi
Mini JLI'ler



Anmeldedatum: 22.07.2004
Beiträge: 27

Medaillen: Keine

BeitragVerfasst am: 27.07.2004, 08:53    Titel: Antworten mit Zitat

Gut, dass ich mich in Punkto Optimierung auf meiner Enterprise-Version ausruhen kann Cool

Zitat:

eher sollte man darauf achten, ... dass man unnötige Daten über den Bus schickt


Daran werde ich mich dann natürlich auch in Zukunft halten, danke MiracleBy für den wertvollen Tip, wie ich aus nem Doom-1-Clon die Hardwareanforderungen von Doom 3 rauskitzeln kann Wink Laughing Laughing
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 27.07.2004, 10:41    Titel: Antworten mit Zitat

Argh, der Context gibt aber eigentlich was anderes her, oder irre ich? Mr. Green
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 31.07.2004, 17:10    Titel: Antworten mit Zitat

Gibt es eigentlich in Sachen Geschwindigkeit einen Unterschied ob man negative Zahlen multiplitziert oder positive?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HotAcid
Super JLI'ler


Alter: 43
Anmeldedatum: 04.08.2002
Beiträge: 372
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 31.07.2004, 17:39    Titel: Antworten mit Zitat

sollte eigentlich nicht, sofern das Betriebssystem das 2k-Format benutzt. Da ist es egeal, ob Zahlen ein positives oder negatives Vorzeichen haben.
_________________
StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 02.08.2004, 08:00    Titel: Antworten mit Zitat

Also statische Variablen anzulegen benötigt gar keine Zeit, da in der exe selbst der Platz für diese Variable reserviert wird. Alle anderen Speicheranforderungen sind halt etws langsamer. Es gibt sogar optimeirungsfreaks, denen die Speicheranforderung vom Betriebsystem zu langsam ist. Die Fordern den Speicher in großen Blöcken an und verwalten den bereich dann selbst.. Kann ich aber keinem empfehlen *g*
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: 02.08.2004, 11:29    Titel: Antworten mit Zitat

Wenn ich noch was zu dem Beitrag sagen darf:
Integerrechnung ist schneller als Fließpunktrechnung (also Float oder Double). Double ist langsamer als float, weil ein einzelnes Double nicht mehr in ein 32-Bit-Register passt.
Wenn es dann noch extrem auf Geschwindigkeit getrimmt werden soll, sollte man kein Short oder gar Byte verwenden - sondern ein Int und Structs sollten auf 32-Bit ausgerichtet sein.
Inwieweit dies alles aber praktisch durchführbar ist, kann ich nicht genau sagen - und so viel schneller wird das ganze auch dadurch nicht mehr.
Das verkürzen der Codepfade hilft ebenfalls ein wenig, also nicht für jede kleinigkeit eine eigene Fuinktion schreiben oder eben wenn möglich vieles inline programmieren

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
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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