Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#8

AW: Kann ich herausfinden wie groß eine Memory-Datenbank ist?

  Alt 27. Jul 2016, 11:12
Nein, kann ClientDataSet auch nicht vollständig.

Man kann (RecordSize * RecordCount) + (TBlobField().Size jedes einzelnen BlobFeldes) rechnen,
bzw. TField.DataSize + (if is TBlobField then add TBlobField().Size) jedes einzelnen Feldes.

Und dazu kommt dann noch jeweils der Offset der Speicherverwaltung.
siehe getmem.inc > SmallBlockTypes ... Standardmäßig: jeder kleine Speicherblock bis 2608 Bytes wird auf jene Größen aufgerundet,
Mittelgroße Blöcke bis 258KB werden auf 256 Bytes aufgerundet und große Blöcke auf 64KB (Verwaltungsgröße vom Windows)

Natürlich wäre es schöner, wenn Embarcadero eine virtuelle Property/Methode im TDataSet einführt, für "Speicherverbrauch", welches dann auch von FireDAC und Sonstigem entsprechend implementiert würde.
Oder zumindestens wenn die Memory-DataSets sowas hätten. (oder ganz geil gleich direkt in TObjekt, so daß man sowas standardisiert jeder Komponente fragen könnte ... bei TPersistent könnte man eventuell serialisieren und dessen Größe nehmen, aber das muß nicht mit dem RAM-Verbrauch übereinstimmen, wie z.B. gespeichert als ANSI/UTF-8 und im RAM als Unicode)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (27. Jul 2016 um 11:16 Uhr)
  Mit Zitat antworten Zitat