Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Bobbafat

Frischling

  • »Bobbafat« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Paderborn

Beruf: Verfahrensmechaniker

  • Private Nachricht senden

1

12.10.2010, 20:46

Frage zu den Datentypen

Ich hab mir heute mal das Buch gekauft und bin nun bei den Datentypen angelangt.
Da hab ich mir die frage gestellt ob es nötig ist die verschiedenen Typen zu nutzen
oder halt nur den der den größeren Werteberreich hat.
Denn ich dachte mir heut zu tage muss man ja nicht mehr auf den Speicherplatz gucken
den die verschiedenen Typen benötigen. Oder etwa doch?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

12.10.2010, 20:51

Ich versuche immer zu erwägen, was der maximale Wert einer Variable werden kann und versuche auch dementsprechend einen Typ zu setzen. Für Koordinaten reicht m.E. bspw. ein short (ja ja float wäre natürlich eigentlich angebracht, aber ist ja nur ein Beispiel), für Punkte doch eher ein uint.
Kann aber sein, dass ich die Ausnahme bin, aber gibt es schließlich nicht ohne Grund diese Vielfalt an Typen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

3

12.10.2010, 20:56

Natürlich ist es heute nicht mehr ganz so schlimm wie zu Zeiten von 1970 oder so, aber trotzdem solltest du wenn möglich die passenden Datentypen verwenden. Gibt dafür mehrere Gründe...

1. Heutzutage laufen jede Menge programme gleichzeitig, was ist, wenn jetzt alle gleichzeitig verschwenderisch mit speicher umgehen? dann kann es doch sehr gut sein, dass es plötzlich mangel gibt. D.h. es wird auf die festplatte erweitert, was aber einen extremen geschwindigkeitsverlust mit sich bringt.
2. Die Datentypen sind ja normalerweise nicht nur zum speichern gedacht, sondern es wird auch damit gerechnet. Was float und double angeht, so ist auf normalen CPUs heutzutage zwar kaum ein unterschied zu erkennen, aber auf GPUs sieht das noch ganz anders aus, die sind z.B. für floats optimiert. Aber auch auf normalen CPUs sind Integerberechnungen schneller als floats.

Eine solche Denkweise solltest du dir also garnicht erst angewöhnen, beim programmieren solltest du wirklich darüber nachdenken was du tust, sonst wirst du nie besser. Bei winzigen hobbyprojekten wie nen pong-clon oder sowas, musst du natürlich nicht ganz so genau hinsehen (in dem stadium kann man es auch meist noch garnicht), aber sobald du mal nen großes projekt vorhast, musst du einfach effizient arbeiten, sonst läuft es am ende einfach nicht.

Bobbafat

Frischling

  • »Bobbafat« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Paderborn

Beruf: Verfahrensmechaniker

  • Private Nachricht senden

4

12.10.2010, 20:56

Also wäre es sinnvoll verschiedene zu nutzen.

Anfangs dachte ich mir ich, dass ich immer double nehemen würd um den
Überlauf der Variable zu vermeiden falls die mal größer ausfallen würde.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

12.10.2010, 20:58

Üblicherweise nimmt man für ganzzahlige Sachen einafch einen [c]int[/c] und bei Fliesskomma Sachen ein [c]float[/c]. Je nach dem passt man das dann halt an, wenn man den Wertebereich einschränken/vergrössern will. Wegen dem Platz musst du dir kaum Sorgen machen. Eher wegen Geschwindigkeit (aber auch das ist meist irrelevant). Wenn du [c]int[/c] benutzt, dann wird da auf der nativen Grösse gearbeitet (auf 32 Bit Systemen halt 32 Bit), was gut ist, denn Operationen auf kleineren/grösseren Typen kann Mehraufwand bedeuten (vor allem grössere).

Also Faustregel: [c]int[/c] und sonst bei Bedarf etwas anderes.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

12.10.2010, 21:00

meistens ists nicht so schlimm wenn man int nimmt wenn short reichen würde. das ist in meinen augen einfach sicherer.
aber stell dir vor du willst ein bitmap speichern mit 32bit farben speichern(8bit/1byte für grün, rot, blau und alpha/transparenz).
da empfiehlt es sich unsigned char(1byte, 0-255) pro farbe an stelle von int(4byte) zu nutzen weil du garantiert keinen größeren bereich brauchst. das wären bei einem pixel schon 4*3 byte mehr was jeder moderner rechner verkraften würde. wenn es allerdings 100 texturen mit jeweils 1000x1000pixeln sind sind es 4*3*1000*1000*100 = 1200.000.000byte(1,2gbyte) mehr. je nach anwendungsbereich sollte man sich also gedanken darum machen.

wenn man spiele für handys entwickelt ist es ist natürlich wieder was anderes und man sollte versuchen möglichst viel speicher zu sparen.

edit: also stimm ich drakon zu^^

edit2: 4* hinzugefügt. danke n0_0ne
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »NachoMan« (22.05.2011, 10:35)


n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

7

12.10.2010, 21:11

pixel nur 3 byte mehr

meiner meinung nach wären das pro pixel 4*3byte mehr ^^ Wenn ich jetzt nicht total auf der leitung stehe, wärens insgesamt dann auch 1200MByte mehr, nicht 300 ^^

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

12.10.2010, 21:22

genau das "4*" hab ich vergessen danke.^^
ich editier es mal
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige