Type-Begrenzung ?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Kernle 32DLL

Betreff: Type-Begrenzung ?

BeitragDi, Jan 16, 2007 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich bastel grad an nem Programm, das evt. später seeeeehr viele
Type-Einträge haben könnte. Also ich meine nicht...

Type Bla
Field BlaFeld
End Type

Sondern das...

a.Bla = New Bla

Meine Frage ist nun, gibt es da irgentwo meine Begrenzung ?
Also, kackt BB z.b. ab wenn es mehr als ~32000 Type-Einträge
zu verwalten hat ?

Genrell würde mich es interessieren wie die Begrenzungen in
BB (bzw. B3D) sind. Also wie lang kann z.b. ein String maximal
sein ?

Grüßle:
Kernle
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

Schnittlauch

Unkraut

BeitragDi, Jan 16, 2007 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Jenachdem wie viel Speicher du hast.
Ich wars nicht.

Kernle 32DLL

BeitragDi, Jan 16, 2007 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Was heißt das genau ? Wieviel speicher belegt denn so
ein Type Feld durchschnittlich ? (evt. müssen bei mir
später weit über 32000 Tausend Felder gespeichert werden,
daher mach ich mir was sorgen ^^)

Aber danke für die schnelle Antwort ^^
 

Shark

BeitragDi, Jan 16, 2007 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja ich habe gerade mal schnell ein Testprogramm geschrieben.

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Const max% = 1000000

SeedRnd MilliSecs()

Type test
   Field a%
   Field b%
   Field c%
   Field d%
End Type

For i = 1 To max
   t.test = New test
   t\a = Rnd(0,32000)
   t\b = Rnd(0,10)
   t\c = Rnd(100,1000)
   t\d = Rnd(0,32234)
Next

s = MilliSecs()
For t.test = Each test
   t\a = t\a + t\b + t\c + t\d
Next
speed = MilliSecs()-s

Text 10,10,"dauert: "+speed+" ms."
Flip
WaitKey()
End


Bei deinen 32000 Einträge geht er alle Einträge in 1 ms durch.
Brauchs dir also keine so großen Sorgen zu machen Smile

mfg Shark

StepTiger

BeitragDi, Jan 16, 2007 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
also die Containervariable nimmt garantiert 4 Byte ein, da es ein Handle ist.
Dann pro String Länge+2Byte
pro Integer 4Byte
pro Fließkommazahl 4Byte

Also Rechnen!
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jan 16, 2007 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Wozu sollte man die id-Handle in die Datei mitspeichern, zudem es unmöglich ist ein fragmentiertes Typefeld in den selben Zustand zu bringen, wie es mal war, nachdem man id-Handle bei Types eingeschaltet hat.

Fazit:

id-Handle eingeschaltet: Fragmentierte Typefelder können nicht mehr in gleicher weise rekonstruiert werden, weil der Programmierer keinen Einfluss auf die id-Vergabe hat. Er kann höhstens nur den Ablauf (schreiben, löschen, schreiben...) nachrekonstruieren, um den ursprünglichen Zustand zu bekommen.

id-Handle ausgeschaltet: Typefelder 'defragmentieren' sich automatisch, verzögert zwar einmal die Ablaufgeschwindigkeit, wird aber dann durch ewig schnellere Ablaufgeschwindigkeit belohnt. id-Handle ist gleich der Reichenfolge der Typeliste und kann - soweit ich weiß - in diesem Zustand nicht ausgelesen werden.

StepTiger

BeitragDi, Jan 16, 2007 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
war denn je die frage des abspeicherns?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragDi, Jan 16, 2007 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Das stimmt so übrigens nicht. Ein Type kann grösser sein, als die reinen Byte die er eigentlich brauchen würde, denn das OS wird es vorziehen, entsprechend seiner eigenen Struktur zu vergeben, das heisst 32Bit in 4Byte blöcken etc.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Kernle 32DLL

BeitragDo, Jan 18, 2007 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, also so weit ich das verstanden habe, muss ich mir nicht
so große Sorgen machen ? ^^

Ich hab mich das gefragt, weil ich (wie man irgentwo im Projekts Forum
lesen kann) einen Vokabeltrainer programmiere, und wir gerade in
der Schule im Informatikunterricht über Integer,etc reden. Da mein
Vokabeltrainer ja auch mehrere Klassen verwalten soll, hatte ich mir
darum ein paar Gedanken gemacht, denn ich verknüpfe meine
Types so:

Klasse
---> Unit
------> Vokabelliste
---------> Vokabel
------> Test
---------> Aufgabe

Und wenn eine Klasse schon 590 Vokabeln hat, und somit auch
ungefähr 590 Aufgaben, kommt da schon ein großer Daten-Berg
zusammen Rolling Eyes (Und wenn es dann noch mehrere Klassen gäbe... Shocked)
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group