![]() |
Re: Dynamische Arrays - Overhead
Nochmal verständlich:
Delphi-Quellcode:
Mein Problem ist dass dieser Code nicht ca. Zeilen*Spalten*SizeOf(Typ) Bytes Ram braucht, sondern eher das 20fache.
procedure overhead;
var i, zeilen, spalten: integer; arr: array of array of Typ; begin zeilen := 32000; spalten := 25; SetLength(arr, zeilen); for i := 0 to zeilen - 1 do begin SetLength(arr[i], spalten); end; end; |
Re: Dynamische Arrays - Overhead
1. Das ist ja nunmal nicht der Record den du vorgestellt hast
2. Warum bei diesem "einfachen" 2-dimensionalen Array nicht sofort
Delphi-Quellcode:
SetLength(arr, zeilen, spalten);
|
Re: Dynamische Arrays - Overhead
habs zu stark vereinfacht :oops:
Delphi-Quellcode:
procedure overhead;
var i, zeilen, spalten: integer; arr: array of record cont: Pointer; strs: array of integer; end; begin zeilen := 32000; spalten := 25; SetLength(arr, zeilen); for i := 0 to zeilen - 1 do begin SetLength(arr[i].strs, spalten); end; end; |
Re: Dynamische Arrays - Overhead
Delphi-Quellcode:
genau dieser Code belegt bei mir, laut Taskmanager zusätzliche 3,748 MB (D7) bzw 3,764 MB (D2009)
procedure overhead;
var i, zeilen, spalten: integer; arr: array of record cont: Pointer; strs: array of integer; end; begin zeilen := 32000; spalten := 25; SetLength(arr, zeilen); for i := 0 to zeilen - 1 do begin SetLength(arr[i].strs, spalten); end; end; also fast 3,8 MB, so wie ich ausgerechnet hatte (XP32) |
Re: Dynamische Arrays - Overhead
Vielen Dank an alle!
Hab jetzt ne neue Datenstruktur und es klappt :) |
Re: Dynamische Arrays - Overhead
Hi,
Aber bist du dir sicher, dass es überhaupt zu irgendeinem Zeitpunkt sinnvoll ist so viele Datensätze auf einmal anzuzeigen oder überhaupt im Speicher rumliegen zu haben? 1000 ist ja schon ne ganze Menge.. Und niemand wird sich je 1000 Datensätze angucken bzw alle auf einmal brauchen. die kannst du auch alle gar nicht auf einmal anzeigen. Und im Speicher brauchst du auch nicht immer alle. Ich würde zusehen, dass du nur das speicherst was du (gerade) auch wirklich brauchst... |
Re: Dynamische Arrays - Overhead
Ansonsten kommt es nur auf die Verwaltung drauf an ... in nichmal 60 MB bekommt ich locker 'nen großes Verzeichnislistening mit 300.000 Datensätzen/Dateien rein und zu jeder Datei noch 'ne Menge Zusatzinfos (
![]() Also viele Datensätze bedeuten nicht immer gleich massig Speicherverbrauch. |
Re: Dynamische Arrays - Overhead
Zitat:
3 Monitore 1900x1200, 1400x1050, 1280x1024 :mrgreen: |
Re: Dynamische Arrays - Overhead
Das heisst ja, dass jeder Datensatz bei dir (1200+1050+1024)/5060720 = 0,00064694 Pixel hoch ist - Reschpäckt! :stupid:
|
Re: Dynamische Arrays - Overhead
Nachdem die Datenstruktur komprimiert wurde (durch ein einziges Array ginge das), könnte man noch die Visualisierung in Angriff nehmen. Man muss nicht alle 100.000 Datensätze anzeigen sondern jeweils nur die paar, die auf einen Bildschirm passen. Beim Scrollen kann man ja aus dem RAM nachladen. Und über das Filtern wird die Datenmenge eh beschränkt.
Aber wer partout 100.000 Datensätze anzeigen will (vermutlich in der Ansicht 'noch kein Filter' gesetzt), der kann das ja machen. Die Optimierung der Visualisierung kann jedoch nicht ungefragt geschehen, dann das ist ja nicht Thema dieses Threads. blablab wird dann, wenn er meint, Hilfe/Anregungen zu benötigen, einen anderen Thread aufmachen. Ich würde mich freuen, wenn blablab die Lösung (also die Änderungen in seiner Struktur) kurz erläutern würde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz