TYPE und der index den Handle() zurückgibt

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

tft

Betreff: TYPE und der index den Handle() zurückgibt

BeitragMi, Jun 06, 2007 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo....

mein neues/altes Project DNA(ELITE war mal). Hatte ich ganz mit DIM's angefangen. Einige Zeit später habe ich dann auf Types umgestellt. Leuft alles ganz super. Nu ist mir beim Testen aufgefallen, das die Instance, also der index der bei jedem NEW vergeben wird einmalig ist. Da stellt sich mir die frage ob der index dann bei 16 Bit oder 32 Bit aufhört, und was dann passiert. Gibts eine Garbagecolection oder einen MAV. Gibt es fieleicht die möglichkeite einen Index widerzuferwenden?
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jun 06, 2007 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Handle bleibt nur dann einmalig, wenn man beim erstellen eines Typeslisteneintrages ql:Handle eingegeben hat. Wird es weggelassen, so wird die ID-Handle einer Typeliste immer durchnummeriert.

Ein Überlauf kämme erst bei 4.294.967.296 (eventuell auch schon bei der Hälfte wegen Vorzeichenbit). Das zu testen, habe ich grad keine Lust. Wink

Wenn du es aber schaffst eine Routine zu schreiben, die 10.000 neue Typeeinträge pro Sekunde macht, so musst du denoch fast 5 (ev. 2 1/2) Tage warten, bis ein Überlauf kommen könnte.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

tft

BeitragMi, Jun 06, 2007 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ..

das nenne ich doch mal eine klare und kurze Antwort. Danke. Ich hatte auch kein lust das zu Testen. Also 32 Bit , eventuell vorzeichenbehaftet.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Kernle 32DLL

BeitragSa, Jun 09, 2007 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Warscheinlich redet ihr auf einer höheren Ebene als ich es verstehe,
aber man kann mit Types (genaue Zahl weiß ich nicht) sehr schnell
einen Buffer Overflow erzeugen. Ob das dann mit den Types oder
dem Inhalt zusammenhängt weiß ich nicht...
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Jun 09, 2007 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, die Zahl schein doch etwas kleiner zu sein als 2^32. Hab's nämlich eben mal ausprobiert und kam auf:
85.530.000 Einträge (bei einem Field);
73.310.000 Einträge (bei zwei Fields);
ohne zwischendurch Einträge zu löschen.

TestCode: [AUSKLAPPEN]
Graphics 400,300,0,2
SetBuffer BackBuffer()

Type test
 Field x%
; Field y%
End Type


While Not KeyHit(1)
 a=a+1
 If a=>10000 b=b+1:Print b+"0000":a=0

 t.test=New test
 t\x=Rand(100)
; t\y=Rand(100)
Wend
End

Im Taskmanager kann man beobachten, wie im Sekundentakt etwa 30 MB hinzu kommen.

@tft, sorry wegen vorheriger Falschaussage. Embarassed

edit1: Nee, Quatsch! Die 80mio sind für gehaltene Einträge. Löscht man zwischendurch, so geht die Handle (wenn man ql:Handle() eingesetzt hat) weiter. Bin jetzt bei 120mio bis 4mrd will ich jetzt nicht warten.

TestCode: [AUSKLAPPEN]
Graphics 400,300,0,2
SetBuffer BackBuffer()

Type test
 Field x%
End Type


While Not KeyHit(1)
 t.test=New test
 t\x=Rand(100)
 id=Handle(t)

 a=a+1
 If a=>10000 b=b+1:Print b+"0000 - id: "+id:a=0

 t.test=First test
 Delete t.test
Wend
End
  • Zuletzt bearbeitet von hectic am Sa, Jun 09, 2007 14:15, insgesamt einmal bearbeitet

Silver_Knee

BeitragSa, Jun 09, 2007 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
1,73 GB auslagerungsdatei 500000000 elemente und ich hab abgebrochen^^
grus an tankbusters avatar^^

Puccini

BeitragSa, Jun 09, 2007 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
30MB pro sec Shocked

^^ das is ja ein resourcenfresser wie vista Wink

wieso hast du das mit dem b os komisch gemacht??
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM
www.ragesoft.de
Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Jun 09, 2007 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Puccini hat Folgendes geschrieben:
30MB pro sec Shocked

^^ das is ja ein resourcenfresser wie vista Wink

wieso hast du das mit dem b os komisch gemacht??

Naja, Recourcenfresser bei etwa 1,2 mio neuen Einträgen pro Sekunde, kann man wohl noch verkraften. Es ist so, als würde man jedem Pixel bei einer 1280x960er Auflösung einen 32Bit-Wert übertragen, und das pro Sekunde und dabei alle Informationen speichern ohne zwischendurch zu löschen.

Also geht schon klar.^^

Das mit dem b zum einen, damit nicht jedem Eintrag einmal das sehr langsame Print ausgeführt wird, sondern jeder 10.000ste Eintrag einmal. Das b+"0000" sollte vermeiden, dass b einen Überlauf produziert, während das andere irgendwie weiter laufen könnte (zB mit einem Reset oder etwas anderem unerwartetem).

Ich frage mich nur, warum FTC 500.000.000 Einträge haben kann? Ich habe 1GB RAM-Speicher. Eventuell läuft das so lange gut, bis gebrauch der Auslagerungsdatei gemacht wird. Da so ein Handling eh unnütz für Spiele ist, könnte dies dann zu einem Overflow führen. Keine Ahnung.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

lettorTrepuS

BeitragSa, Jun 09, 2007 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

tft

BeitragSa, Jun 09, 2007 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ...

Ja ... der Speicher wird wider freigegeben. Aber der Index endet irgendwann. Und ich wuste nicht wo.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Tankbuster

BeitragSa, Jun 09, 2007 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin auf 83.600.000 Types gekommen (allen wurde nur eine Variable zugewiesen), aber dann hab ich mich nicht weiter getraut Embarassed
Meine Auslagerungsdatei seht ihr hier:^^
Ich frag mich aber wie FTC auf 500000000 gekommen ist.. naja.. liegt wahrscheinlich am Rechner Wink
Seht euch mal das an... die wichtigen Stellen (ok.. eigentlich ist alles irgendwie wichtig) hab ich ROT makiert! Twisted Evil
user posted image
Twitter
Download Jewel Snake!
Windows|Android

Kernle 32DLL

BeitragSa, Jun 09, 2007 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
wen man in die Types ein Bild oder eine Textur läd ist der Ram
sogar noch schneller voll ^^

Hatte mal sowas gebastelt (Texturen in Types speichern),
und ich hatte vergessen beim löschen der Types die Textur
mit "freizugeben". Das Ergebniss kann man sich vorstellen...

Das kam Tankbuster's Avatar sehr nahe ^^
(sehr nah aber auch nur wiel ich nur 1gb Ram hab xD)

Selbst wenn man die Texturen jedoch beim löschen freigeben
würde, ist die Anzahl der Types dann trotsdem recht begrenzt

...denke ich mal...

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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group