Bank, Dim, Type, Blitzarray, was wann?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

s_m_w

Betreff: Bank, Dim, Type, Blitzarray, was wann?

BeitragMi, Okt 29, 2008 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt eine Menge Wege etwas zu speichern, jedoch ist mir noch schleierhaft was wann am besten und schnellsten ist, kann mich da jemand aufklären?
Sheep Happens

Nicdel

BeitragMi, Okt 29, 2008 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Types und Dims.

BladeRunner

Moderator

BeitragMi, Okt 29, 2008 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hängt vom jeweiligen Fall ab. Am besten testest Du die einzelnen Methoden durch und schaust was am schnellsten für dich läuft.
Generell haben Types ein wenig mehr Verwaltungsaufwand intern, sind also langsamer als die anderen Strukturen. Dafür sind sie unschlagbar flexibel.
Arrays und Banks nehmen sich nicht wirklich viel.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

s_m_w

BeitragMi, Okt 29, 2008 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, also ganz generell könnte man sagen, Types wenn man Verwaltung braucht, dims für den Rest?
Sheep Happens
 

dgxjerry

BeitragMi, Okt 29, 2008 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich benutz eigentlich nur Types und Dims, und du kannst fast alles damit machen. Dims sind halt am einfachsten anzusprechen und auch sehr schnell. Und Types sind eben sehr Variabel, wie BladeRunner schon gesagt hat. In Banks kannst du unmengen an Daten ablegen und das auch sehr schnell, aber das ansprechen ist komplizierter als bei Dims. Aber man kann sie Resizen, ohne dass daten verloren gehen. Das macht sie vielleicht ein bisschen flexibler als Dims. Aber ich würde dir trotzdem Dims und Types empfehlen. In der Hilfe lernst du alles was du dazu brauchst.
I don't suffer from insanity - I enjoy every minute of it!

It's not a bug - It's a feature!

s_m_w

BeitragMi, Okt 29, 2008 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
dgxjerry hat Folgendes geschrieben:
Aber ich würde dir trotzdem Dims und Types empfehlen. In der Hilfe lernst du alles was du dazu brauchst.

Ich benutze BB seit 4 Jahren (oder so?), ich kann wohl schon mit Types und Dims umgehen, hatte nur das Gefühl, dass so eine Frage eher in die Beginners-Corner passt Razz
Sheep Happens
 

dgxjerry

BeitragMi, Okt 29, 2008 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann is ja alles klar Very Happy
I don't suffer from insanity - I enjoy every minute of it!

It's not a bug - It's a feature!
 

BIG BUG

BeitragDo, Okt 30, 2008 2:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Dims, Arrays und Banks sind alles Datenfelder, die von der Art der Speicherung getrennt von Types zu betrachten sind. Dabei ist die so gerne gestellte Frage "was ist schneller" in den seltensten Fällen überhaupt von Relevanz.
Es ergibt sich also folgende Gliederung:

1. Types
Types ist eine Sammlung von strukturierten Daten ähnlicher Art, die normalerweise keine bestimmte Reihenfolge haben.
Ein Satz kann jederzeit ohne weiteres eingefügt oder gelöscht werden.
Sie werden für alle "Verwaltungsaufgaben" benutzt, für Daten die sich zwischendrin in der Anzahl ändern.
z.B. für Spielobjekte, Gegner, Netzwerk-Clients, GUI-Objekte, Partikel, etc.


2. Felder
Felder sind ein einfach ein Block aus fortlaufenden ähnlichen/gleichartiger Daten. Die Reihenfolge der Daten ist von größter Bedeutung. Eine falsche Reihenfolge führt zu Fehlern in der Verarbeitung.
Die Daten sind relativ statisch, wenn sich die Anzahl ändert, dann wird normalerweise gleich ein komplett neues Feld erstellt.
Typische Beispiele sind Tilemaps, Bilder, Listen von zu ladenden Images oder Sounds, alles was einmal geladen wird und sich nicht mehr groß ändert.

2.1. DIMs
Dims ist der Standard für Felder, dank mehrere Dimensionen ideal für Tilemaps geeignet. Dims sind immer global.

2.2. Blitzarrays
Blitzarrays sind "kleine" Dims, verwendbar immer dann, wenn man schnell mal lokal in einer Funktion oder innerhalb eines Types ein kleines Feld braucht.

2.3. Banks
Banks sind die flexibelste Art der Felder. Sie lassen sich problemlos an Funktionen übergeben und in Types verwalten.
Außerdem kann man hier auch einzelne Bytes speichern um Platz zu sparen.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

aMul

Sieger des Minimalist Compo 01/13

BeitragDo, Okt 30, 2008 9:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Abgesehen von dem was BIG BUG geschrieben hat, lässt sich vielleicht noch sagen, das Banks sehr hilfreich sind, wenn man große Mengen an Daten von der Festplatte lesen/auf die Festplatte schreiben möchte.
Man kann mit Readbytes und Writebytes direkt eine ganze Bank lesen/schreiben und mit dieser dann Intern weiterarbeiten.
Das ist merkbar schneller als einzelne Bytes aus den Dateien zu lesen und nach jedem Byte wieder zu entscheiden wie es weitergehen soll.
Außerdem kann man so z.B. Spielstände in einem Bank vorbereiten um sie dann fix auf die Platte zu speichern. Auch das geht schneller als ein Haufen WriteByte und die ganzen logischen Verknüpfungen dazwischen.
Zumal diese Methoden natürlich sehr flexibel sind, dafür aber auch einen Mehraufwand für den Programmierer bedeuten.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

PsychoKhan

BeitragFr, Okt 31, 2008 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist denn eigentlich schneller?

Code: [AUSKLAPPEN]

Type mydata
     Field a
     Field b
End Type

Dim Welt.Feld (20, 20)


oder das hier:

Code: [AUSKLAPPEN]

Dim Welt_a(20, 20)
Dim Welt_b(20, 20)

BladeRunner

Moderator

BeitragFr, Okt 31, 2008 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wäre es mit testen ? Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group