AW: riesengroße Arrays > 2GB
Hallo,
ich werfe mal Memory Mapped files ins Rennen. |
AW: riesengroße Arrays > 2GB
New / Dispose...
Btw: Ist Euch aufgefallen, dass der TE nicht mehr geantwortet hat? Das ist wieder so ein Thread der sich selber am Leben hält... Mavarik :coder: |
AW: riesengroße Arrays > 2GB
Zitat:
|
AW: riesengroße Arrays > 2GB
Zitat:
Was ich aber meinte ist:
Delphi-Quellcode:
oder (so würd ich das machen)
TYPE
pfiguren = ^tfiguren; tfiguren = record x,y,f,s : integer; end; pframes = ^tframes; tframes = record a : integer; f : TList; end; var frametab : TList;
Delphi-Quellcode:
:stupid:
TYPE
pfiguren = ^tfiguren; tfiguren = record x,y,f,s : integer; end; pframes = ^tframes; tframes = Class private pa : integer; pf : TList; procedure ClearAll; public : function Add(x,y,f,s:integer):integer; procedure Del(index:integer); property f[index:integer]:TFiguren read GetF write SetF; published property a : integer read pa write pa; end; var frametab : TObjectlist; |
AW: riesengroße Arrays > 2GB
Das
f: array [1..9999] of tfiguren; ebenfalls zu einer TList zu machen, ist auch OK, nur dann hättest Du gleich je TFiguren * 4 Byte mehr für die Pointer in der TList. Entspricht dann: 10000 * 4 * 131072 = 4,8 Gb.. Und das währe dann wirklich wesendlich mehr ;) Es ging mir in meinem Vorschlag darum, die 19 Gb am Stück aufzuteilen und dazu genügt es schon aus tframes eine Klasse zu machen.. Denn für 159992 Bytes am Stück ist es einfacher Speicher zu bekommen, statt für 19 Gb. ;) Lt meinem Wissen ist " = Class" und " = Class(TObject)" identisch, zu mindestens bei Delphi 6 ;) Das " = Class" stellt nur eine verkürzte Schreibweise da. |
AW: riesengroße Arrays > 2GB
Nö.
TFiguren ist ein Zeiger auf einen Record. D.h. ich hab pro Element ledigilich 4 Byte die am Stück benötigt werden (+ 16 Byte irgendwo im Speicher). Wie weiter oben schon erwähnt wurde, ist hier das entscheidende, das ein Array den Speicher am Stück brauchen. d.h. das das Array (mit den 10000 Elementen) im 1. Fall 156 MB am Stück braucht, in meinem Fall 39 MB (Also bei TFiguren als Zeiger). Die 156 MB verteilen sich in kleine Häpchen über den Speicher (je nach dem wo der Speichermanager das grad hinpackt.) Aber egal wie nu, wir dürften uns einig sein, das hier einfach viel zu viele Daten im Speicher gehalten werden (bzw. versucht wird das zu tun). |
AW: riesengroße Arrays > 2GB
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz