PROJEKT CCE

Projekt CCE ist ein privates Projekt, in dem ich viele theoretische Konzepte praktisch anwenden kann. Der Fokus liegt darauf, einige Engine-Systeme in C++ umzusetzen. Begonnen habe ich dieses Projekt im Januar 2023. Seitdem hat sich das Projekt sehr stark weiterentwickelt.

Aktuelle Features umfassen unter anderem:

STRINGS

Strings sind ein elementarer Bestandteil jeder Software. Besonders in Games spielen sie eine kritische Rolle. Ihre Immutability machen Strings zu einem performancekritischen Faktor bei klassischen Operationen. Inspiriert von Jason Gregorys Game Engine Architecture, habe ich eine eigene String-Klasse implementiert, die einige Operationen optimiert.

Nachfolgend ist die Performance unterschiedlicher Operationen aufgeführt.
Alle Tests wurden in Release Konfiguration über 1.000.000 Operationen gemittelt.

Operation CCE::String std::string
Create New 137 ns 199 ns
Create Existing 68 ns 328 ns
Copy 136 ns 58 ns
Move 129 ns 23 ns
Length 26 ns 23 ns
Compare 26 ns 79 ns
Append 395 ns 65 ns
Destroy 1898 ns 304 ns



Die Destruction der Strings ist aktuell noch sehr aufwändig, da hier stets eine Defragmentierung durchgeführt wird. Dieser Vorgang kann später über mehrere Frames verteilt durchgeführt werden und/oder nicht bei jeder Destruction, sondern nur falls notwendig. Gut zu erkennen ist auch der Overhead beim Appenden von Strings. Hierbei wird stets das Daten-Array durchlaufen um die passenden Strings zu finden. Ebenfalls auffällig ist die Pointer-Indirection, die ich in Zukunft noch optimieren möchte.

Diese Implementierung bietet in einigen Operationen eine Optimierung, ist jedoch nicht grundlegend "besser" als andere Modelle. So oder so ist es jedoch eine spannende Herausforderung, die mir die Implementierung einiger grundlegender Optimierungskonzepte wie ein cache-freundliches Data-Layout und Hashing nähergebracht hat.

RETURN

Diese Webseite verwendet keine Cookies und speichert keine Daten.
Viel Spaß beim surfen!

Alles klar!