Ok, gestern habe ich mich sehr wortkarg gegeben, das tut mir leid. Falls es noch jemanden interessiert würde ich versuchen mich jetzt ein wenig besser auszudrücken.
Nun der Link. Er führt zu einer Seite in der in einem Absatz Vorteile wie auch Nachteile verketteter Listen in Verwendung mit Spielobjekten besprochen werden. Zwar nicht ganz hiermit vergleichbar, jedoch von der Sinnhaftigkeit ähnlich, da es auch um Verwendung gewisser Datentypen und deren Begrenzung und Flexibilität geht. Kurz und kapp:
...Man stelle sich ein 3D-Szenario vor, in dem einige Asteroiden platziert werden sollen. Was spricht dagegen, eine Obergrenze für deren Anzahl festzulegen? Aus Performancegründen können sowieso nicht beliebig viele Objekte animiert und gerendert werden. Speicherverschwendung ist das auch nicht, wenn man davon ausgeht, dass zu irgendeinem Zeitpunkt die Obergrenze erreicht wird...
Es ist eben genau dieser Punkt. Aus Performancegründen macht es keinen Sinn Tausende an Feinden oder was auch immer zu erzeugen und dann bei jedem Frame den sie noch bestehen auch wieder zu rendern. Wieso sollte man hier also nicht auf kleinere Datentypen zurückgreifen.
Was dann das Thema hier betrifft:
|
C-/C++-Quelltext
|
1
|
typedef short int16
|
Das war ja noch nicht alles, man könnte ja genauso gut auch folgendes deklarieren:
|
C-/C++-Quelltext
|
1
|
typedef long int32
|
Der Gedanke, oder zumindest mein Gedanke dahinter war, dass man so zwar noch immer nicht garantieren kann, dass ich nun wirklich Integer der Größe 16 und 32 Bit verwende, jedoch genauer schätzen kann in welche Richtung das ganze gehen wird.
Wie ich bereits geschrieben habe ist es allgemein ja so:
char <= short <= int <= long
Für mich erschließt sich daraus, sofern man davon ausgeht das der kleinste Datentyp immer noch 8 Bit besitzt, da ja selbst
bool welcher im Prinzip nur 1 Bit bräuchte 8 Bit besitzt, dass ich mit der Verwendung des oben definierten Typs
int16 mindestens die Zahl 125, wenn ich das ganze
unsigned mache 255, speichern kann. Gleichermaßen kann ich durch
int32 davon ausgehen den größt möglichen Typ zu verwenden.
Mir ging es also weniger um die eigentlichen Werte sondern um die Relationen, welche sich durch gewisse Dinge einfach besser einschätzen lassen. Verwende ich normale Integer so gibt es weitaus mehr Richtungen: Der Rechner könnte dafür sorgen das diese Variable der
short gleicht, aus dem ergibt sich das Integer klein wenn nicht sogar der kleinste Datentyp ist, also möglicherweise nur 8 Bit speichern kann. Auf der anderen Seite könnte
int dem in der Liste größten Datentyp gleichen, was wiederum heißt ich könnte viel mehr speichern als eigentlich vorgesehen. Je nach dem was nun zutrifft kann es zu Fehlern kommen.
Es wäre also eine Überlegung Wert
int anders zu definieren, damit ich von Haus aus schon gewisse Rahmen einhalte bei der Verwendung. Mir wäre der reine Gebrauch nämlich
zu variabel.
Für mich ist das ganze auch hilfreich was
Portabilität angeht. Gibt man diesen Begriff bei Google ein so erhält man als erstes eine Wikipediaverzweigung, die gleich zu Anfang die Plattformunabhängigkeit verlinkt. Nun ist es, wie oben schon niedergeschrieben, leichter Datentypen welche nicht der Architektur des Rechners entsprechen sollen einzuschätzen. Zumindest sehe ich das so.
Jetzt noch die Wiederverwendung gewisser Programmabschnitte. Für mich ist es so, ein Programm soll seinen Zweck so gut wie möglich erfüllen und nicht in gewissen Dingen Kompromisse eingehen weil ich
möglicherweise Code später wiederverwenden möchte. Wenn das dann der Fall ist, so sollte ich sowieso noch einmal durch den Quelltext gehen und sehen ob alles wirklich stimmt, es sei den dieser besondere Code wurde von Anfang an schon so geschrieben, dass er auch wirklich überall einsetzbar ist.
Naja, das sind zumindest meine Ansichten. Von irgendwelchen Optimierungen will ich hier nicht reden, das ist ja auch nicht der Sinn dahinter, es geht mir nur um die bessere "Kontrolle" über meinen Programmcode.
Mlg
S4My