Nai
Lt. Commander
- Registriert
- Aug. 2012
- Beiträge
- 1.578
Was soll die Diskussion um den Platzbedarf des Binaries überhaupt, wenn man ein Spiel programmieren möchte? Die Binary an sich belegt bei modernen Spielen nur wenige MB im RAM, im Vergleich zu den restlichen 1-8 Gigabyte an Daten ist das komplett vernachlässigbar. Davon wird auch ein Großteil von großen Objekten (Videos, Sound, Texturen, 3D-Daten, Leveldaten, KI-Daten, Logikdaten) belegt sein, so dass ein paar byte an Overhead bei diversen kleineren Objekten egal sein sollten. Deshalb sollte man lieber die 80-20 Regel (http://de.wikipedia.org/wiki/Paretoprinzip) befolgen und an dem restlichen Zeug optimeren, anstatt seine Zeit auf das Binary zu verschwenden. Außerdem bis man ein Spiel programmiert hat, was so viel Speicherplatz sinnvoll belegt, so sind schon ein paar Mannjahre an Entwicklungszeit vergangen. Deshalb braucht man bei kleineren Projekten erst gar nicht damit anfangen sich darüber auch nur irgendwelche Gedanken zu machen. Ähnlich verhält es sich mit der Rechenleistung: Man braucht sich keine Gedanken um kleinere Optimierungen oder um die Performance seiner Programmiersprache machen. Man darf nur nicht etwas extrem dummes wie eine naive Kollisionsberechnung mit n^2 Komplexität machen.
Des Weiteren: Der größte Nachteil von VTable ist m.E. nicht der höhere Speicherplatzbedarf oder die direkte höhere Laufzeit, sondern dass der Compiler die virtuellen Funktionsaufrufe nicht inlinen und dadurch auch nicht über mehrere Funktionsaufrufe vektorisieren kann, wie zum Beispiel bei:
for each Object in Vector
Oject -> VirtualFunction();
Da SIMD immer wichtiger wird bei CPUs wird kann das Vektorisieren aber für die Performance entscheidend sein.
Des Weiteren: Der größte Nachteil von VTable ist m.E. nicht der höhere Speicherplatzbedarf oder die direkte höhere Laufzeit, sondern dass der Compiler die virtuellen Funktionsaufrufe nicht inlinen und dadurch auch nicht über mehrere Funktionsaufrufe vektorisieren kann, wie zum Beispiel bei:
for each Object in Vector
Oject -> VirtualFunction();
Da SIMD immer wichtiger wird bei CPUs wird kann das Vektorisieren aber für die Performance entscheidend sein.