Showcase

Databank-Precompiler


Genre: Anwendung
Windows


Abgegebene Stimmen: 14

Du musst eingeloggt sein, um eine Bewertung abgeben zu können.

Fortschritt: 95%
Version: 1.7
Entwickler: mpmxyz

Beschreibung

Daten, Daten, Daten...
Wie speichert man sie?
In Arrays:
-Und was ist, wenn ich einen Eintrag hinzufügen möchte?
In Types:
-Und was ist mit baumartigen Strukturen und der Geschwindigkeit?
In Banks:
-Wie war noch einmal der Offset?
-Und wie mache ich jetzt am schnellsten aus dem Byte ein Short?

Dafür gibt es eine Lösung:
Den Databank-Precompiler

Ein mit dem DataBank-Precompiler erstelltes Programm nutzt Banks, um Daten zu verwalten.
Es hat die Geschwindigkeit von Banks, die Einfachheit von Types und einige Extrafunktionen.


Wenn jemand Fragen, Fehler, Rechtschreibfehler oder keinen Plan hat, dann kann er sich bei mir mit einer PM melden.

Features

-Definieren von DataBanks mit Variablen
-die Datentypen Byte, Short, Integer, Float und String
-Jeder "Variable" kann ein Startwert gegeben werden; Dabei kann auch z.B. "CreateBank" oder eine lokale Variable genutzt werden.
-Die notwendigen Daten werden aus Inis und den BB-Dateien geladen
-19 Datenverwaltungsfunktionen
-gleiche Lese-/Schreibbefehle für verschiedene Datentypen
->Nie wieder nach dem Datentyp suchen
-Ini-Lade- und Schreibfunktionen
-Lade- und Speicherfunktionen für Bytecode

--->Man hat weniger Arbeit mit größerer Wirkung.

Der Precompiler wird einfach gestartet:
Die Haupt-Ini-Datei auf die Precompiler-Exe ziehen und schon arbeitet er.
Wenn man dann noch die Fortschrittsanzeige deaktiviert hat, dann merkt man nur daran, dass im fast selben Moment die neuen Dateien fertig sind, dass überhaupt gearbeitet wurde.

Die Databanks können relativ leicht als Basis für zur Laufzeit erstellte "Types" genutzt werden.

Version 1.1:
-automatisches Folgen von Includes mit der Einstellung "Autoinclude" in den Ini-Settings
Version 1.2:
-"AddFile" auf Inis ist jetzt möglich; d.h. man kann jetzt die Beschreibung der Databanks in mehrere Dateien auslagern.
-Mit einem Zusatzparameter kann man eine beliebige Anzahl von Einträgen erstellen oder löschen.
-Die neue Funktion "GetID" kann jetzt aus Offsets IDs machen.
-Referenztyp Nr.2 ist für das Erstellen von mehreren Einträgen mit einem "Add"-Aufruf nützlich, wenn man eine Referenz mit z.B. "CreateBank()" erstellt hat. Mit der neuen Referenz bekommt nämlich jeder Eintrag dann eine eigene Bank.
Version 1.3:
-Kontrolle, ob der Name einer Databank/Variable erlaubt ist
-Optimierung der Add/Remove-Funktionen
-Es gibt jetzt eine einfache HTML-Dokumentation.
-Bei ''Reference="2"''-Standardwerten können jetzt auch die DBPC-Funktionen genutzt werden.
Version 1.4:
-Es gibt nun Lade-/Speicher-Funktionen für Inis.
-man kann jetzt das Anführungszeichen in String-Werten und Referenzen nutzen, indem man das von HTML bekannte """ nutzt. Für "&" gibt es ein dem entsprechendes "&".
Version 1.5:
-Für alle Sonderzeichen mit dem ASCII-Code 0 bis 31 gibt es jetzt aus HTML bekannte Codierung "�" bis ""
-Der Name der Abbruchsektion wird in der Globale "EscapeSection$" gespeichert.
Version 1.6:
-Es gibt jetzt Arrays.
-Der Parameter "EscapeSection$" wurde aus der Save-Funktion entfernt.
Version 1.7
-Die Funktion "Copy" wurde hinzugefügt.
-Man kann jetzt mit "SaveBin" und "LoadBin" den Inhalt von Databanks als Bytecode speichern und laden. Im Vergleich zu den auch für Menschen lesbaren Inis ist die Platzersparnis groß.

Downloads

DataBank-PreCompiler1.7
(650,45 KB, 321 Downloads)


Kommentare

(Freitag, 2. Oktober 2009 um 20:25 Uhr)

Von mpmxyz

Die Databanks sind eigentlich nur normale Banks, deren Benutzung mit Hilfe des Precompilers erleichtert wird.
Solange du nicht irgendwelche Einträge verschiebst oder einen der ersten Einträge löschst, sind sie schneller als Types.
->Du hast die Type-Dynamik und durch die Verwendung von Banks eine ähnlich hohe Geschwindigkeit, wie mit Arrays.
Solange es also kein wildes Hin- und Hergeschiebe geben sollte, sind Databanks dafür gut geeignet.
Das Erstellen von Einträgen ist übrigens auch sehr schnell.
mfG
mpmxyz
(Freitag, 2. Oktober 2009 um 13:42 Uhr)

Von Firstdeathmaker

Hmm, habe übrigens noch nicht abgestimmt Wink Obwohl 4.11 in meinen Augen schon eine krass hohe Bewertung ist...

Ich glaube ich habe den Sinn und Zweck noch nicht so richtig verstanden. Wofür ist das ganze denn jetzt genau geeignet? Könntest du vielleicht ein konkretes Beispiel benennen was durch die Benutzung des Precompilers besser wird?

z.B.: Ich habe ein Spiel und möchte dynamisch Leveldaten verändern und suche dafür eine ordentliche Speicherstruktur. z.B. habe ich eine Spielwelt in der sich mehrere Figuren befinden welche sich gegenseitig beeinflussen können und in welche wärend der Laufzeit auf neue Spielfiguren eingefügt werden. Das ganze soll über Netzwerk funktionieren, ich brauche also einerseits die Dynamik von Types (Listen) und andererseits die schnelle Addressierung von Arrays.
Wäre es dafür klug das System einzusetzen? Und wie ginge das?

Oder ist es eher in dem Sinne gedacht, dass man z.B. eine statische Datenmenge (z.B. feste Leveldefinitionsdateien für ein Jump&Run oder ein Wörterbuch) hat und damit arbeiten möchte, aber keine Werte hinzufügen oder löschen möchte?
Moment mal... (Freitag, 14. August 2009 um 12:59 Uhr)

Von mpmxyz

Ich habe mich über die guten Bewertungen, darunter drei 5er, ein 4er und ein 3er, gefreut.
Danke für diese Bewertungen!

Aber nun hat mich eines verwundert: Vorhin hat jemand dem DBPC eine Bewertung von 2 gegeben.
Jeder darf so bewerten, wie er es möchte.
Dagegen habe ich auch nichts.
Und ich möchte auch keine übertriebenen Bewertungen haben und die Top 10 wäre meiner Menung nach für dieses Programm auch etwas hochgegriffen.

Aber: Ich möchte gerne wissen was an meinem Programm schlecht ist, damit ich es in diesem Punkt verbessern kann.
Ich bin halt ein Perfektionist. Wink

Ich bitte diese Person, mir zu sagen, was ich falsch gemacht habe, danke schon einmal im Vorraus und ich bin auch nicht sauer, wenn keine Nachricht kommt.

mfG
mpmxyz

P.S.: Wenn ich mich geirrt habe und einer seine Wertung nach unten korrigiert hat, während jemand anderes gleichzeitig mit besser als 2 bewertet hat, dann nehme ich alles zurück. Smile
:) (Montag, 13. Juli 2009 um 12:10 Uhr)

Von n-Halbleiter

Sehr schön, ich habe schon ein wenig damit herumexperimentiert, mit der Referenz ist es um einiges Einsteigerfreundlicher gestaltet. Was eventuell noch interessant wäre, wäre ein Mathe-Precompiler in deinem drin ( z.B. könnte 5C3 in Binomialkoeffizient(5,3) umgewandelt werden und die Funktion gleich mit dazu, was das schreiben von Formeln schon ziemlich vereinfachen würde. Wink ) Das ist aber nur eine Idee. ^^
Re: Geschwindigkeit? (Montag, 29. Juni 2009 um 17:09 Uhr)

Von mpmxyz

Ich habe es noch einmal extra für dich die neuste Version getestet:
Es ist teilweise mit Extrafunktionen sogar um einiges schneller als Types.
Die 7 Fields/Multiple-Variablen sind alle Integer.

Types(100000 Einträge):
1. Erstellen der Einträge: 54 ms
2. Setzen von jeweils einem Field: 15 ms
3. Auslesen von diesem Field: 4 ms
4. Delete Each: 12 ms
Batabanks:
-Erstellen von 100 Databanks: 18 ms (mit 7 Strings mit langem Startwert)
Pro DataBank:
1. Erstellen von 1000 Einträgen: insgesamt 10 ms
2. Eine Variable pro Eintrag setzen: insgesamt 9ms
3. Eine Variable pro Eintrag auslesen: insgesamt 1 ms
4. Alle Einträge löschen: insgesamt 0 ms (sehr sehr schnell)
Zusätzlich pro Databank:
-Einen Eintrag woanders hinschieben: insgesamt 300 ms
-Zwei Einträge tauschen: insgesamt 42 ms
Und zum Schluss:
-Das Löschen von den 100 Databanks: 3 ms
->Sie sind schneller als Types.

Aber: Einen großen Vorteil habe ich noch nicht getestet!
Da man mehrere Databanks gleichen Typs erstellen kann, kann man Parent-Child-Beziehungen, wie sie bei GUIs vorkommen, von der Geschwindigkeit gesehen fast optimal herstellen.
Durch Databanks können die Parents nämlich alle ihre Childs kennen und müssen daher nicht erst in einer großen Liste, wo auch alle anderen sind, nach ihnen suchen.
*Doppelpost* (Montag, 29. Juni 2009 um 13:36 Uhr)

Von Eingeproggt

... der aber berechtigt ist, da sich ja wieder etwas getan hat.
Ich hab die Neuerungen aufmerksam verfolgt und bin immer mehr der Meinung dass du dir dabei ordentlich was gedacht hast (Noch dazu wo ich solche Art von Hilfstools selber liebe Smile )
Danke für die HTML-Doku... Aber zu mehr als kleinen Tests hats noch nicht gereicht meinerseits.
Kleine Frage: Hast du dich selbst schonmal durch Tests vergewissert dass die Methode schneller ist als die Verwendung von Types? Oder ist das nur Theorie?
Interessant (Samstag, 27. Juni 2009 um 20:33 Uhr)

Von Eingeproggt

ich muss sagen: Gute Idee und zumindest das von mir angeschaute Tut funktioniert.
Aber ich hab da irgendwie so meine Zweifel ob sich viele Leute den Aufwand antun werden sich in dein System einzuarbeiten. Da schätz ich würden die meisten ihre eigene Datenverwaltung erfinden.

Achja, eine noch bessere Dokumentation, zB in Form von HTML wär nicht schlecht.

Aber ich möchte nochma wiederholen: Innovatives Projekt welches sich wirklich als brauchbar erweisen könnte, wenn die Verwendung etwas besser erläutert wird und es auch wirklich zuverlässig arbeitet. Habs noch nicht auf Herz und Nieren getestet.