AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi su. nach speichersparender Array-Variante
Thema durchsuchen
Ansicht
Themen-Optionen

su. nach speichersparender Array-Variante

Ein Thema von EccoBravo · begonnen am 15. Okt 2009 · letzter Beitrag vom 15. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#1

su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 10:57
Hallo,

Bin bei meiner Programmierung auf der Suche
nach einer speicherplatzsparenden Array-Variante.
Mein Array im untenstehendes Code
führt bei einer Arraydimension [1..512, 1..512, 1..100]
zumZulaufen desd Arbeitsspeichers.
Error:= 'zu wenig Arbeitsspeicher';

Codebeispiel:

Delphi-Quellcode:
  
TEB_Pix = class(TObject)
    private
        FPix: integer;
        procedure SetPix(const Value: integer);
        function getPix: integer;
    protected
    public
    published
        property Pix: integer read getPix write SetPix;
    end;

    TEB_Grauwert = class(TObject)
    private
        FGrauwert: word;
        procedure SetGrauwert(const Value: word);
        function GetGrauwert: word;
    protected
    public
    published
        property Grauwert: word read GetGrauwert write SetGrauwert;
    end;

    TEB_PixMatrix = array of array of TEB_Pix; // 512 x 512
    TEB_GrauMatrix = array of array of array of TEB_Grauwert; // 512 x 512 x 100
    TEB_Buffer = array of Byte;

    { TEB_Bild }
    TEB_Bild = class(TObject)
    private
        ...
        FPixMatrix: TEB_PixMatrix;
        FGrauMatrix: TEB_GrauMatrix;
        ...
        ...
        function GetGrauMatrix(Xind, Yind, Zind: integer): TEB_Grauwert;
        function GetPixMatrix(Xind, Yind: integer): TEB_Pix;
        procedure SetGrauMatrix(Xind, Yind, Zind: integer;
            const Value: TEB_Grauwert);
        procedure SetPixMatrix(Xind, Yind: integer; const Value: TEB_Pix);
    protected
    public
        property PixMatrix[Xind, Yind: integer]: TEB_Pix read GetPixMatrix write
        SetPixMatrix;
        property GrauMatrix[Xind, Yind, Zind: integer]: TEB_Grauwert read
        GetGrauMatrix write
            SetGrauMatrix;
        ...
    published
        ...
    end;

var
    Bild: TEB_Bild;
Hat nicht jemand eine Idee ?!


Danke im Voraus

EB

PS:
WinXP prof
2GB RAM
2GB Page
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:07
Hast du mal berechnet, wie viel Speicher belegt werden würde
512 * 512 * 100 * 2 Byte = 52428800 KByte = 50 GB
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#3

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:10
Hallo mkinzer,

danke, aber ich glaube hier an einenRechenfehler.

1 Word = 2Byte und somit wären es 50 MB

Liege ich hier falsch ??

EB
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:12
Also ich komme auf 512 * 512 * 100 * 4 (eine Objektreferenz ist doch 4 Byte groß, oder?) = 104.857.600 Byte zzgl. Speicherbedarf für die Objekte selbst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:16
Stimmt, habe übersehen, dass es eine Klasse ist (bin von einem Record ausgegangen). Die 2 bezogen sich auf FGrauWert (Word). Da es Klssen sind, kommt diese noch dazu; dann wären es schon 150GB Platzbedarf
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#6

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:18
hallo mKinzer,

verstehe ich leider nicht

record -- Klassen ?

150 GB ?

Danke EB
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#7

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:20
GB? Eher MB
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:20
Zitat von mkinzler:
Hast du mal berechnet, wie viel Speicher belegt werden würde
512 * 512 * 100 * 2 Byte = 52428800 KByte = 50 GB
Kannst Du mir mal verraten wie Du da auf 50 GigaByte (50 * 10^9) kommst?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:23
Haste recht: sind ja Bytes
512 * 512 * 100 * (4 + 2) = 157.286.400 Bytes /1024 = 153.600 KByte / 1024 = 150 MBytes
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#10

Re: su. nach speichersparender Array-Variante

  Alt 15. Okt 2009, 11:24
mKinzer,

nun ist leider die Diskussion entgleist.
mKinzer, ich wollte Dich nicht blamieren,
will einfach nur mein Programm zum laufen bringen.

Gruß
EB
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 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