AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 64 Speicherfragen

Ein Thema von BigAl · begonnen am 6. Feb 2014 · letzter Beitrag vom 19. Feb 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Delphi 64 Speicherfragen

  Alt 6. Feb 2014, 20:55
Du hast einen Adressraum von 64^2 (OK, teilweise auch etwas weniger), aber Real hast du maximal RAM + Auslagerungsdatei.

PS: Das hat man auch schon mit 32 Bit.

Es gibt da Adresswerweiterungen, aber praktisch kannst du das auch einfach mit MMFs (Memory Mapped Files) machen, was aber nicht unbedingt Dateien seien müssen,
aber bei 400 GB brauchst du sowieso eine Erweiterung.

MMFs kann man stückchenweise in den Speicher mappen und Windows sorgt da für das Cachen der Datei.


Wenn du einen zusammenhängenden "Stream" hast, dann brauchst du auch bei 64 Bit immenoch einen "zusammenhängenden" Speicherbereich, innerhalb des Virtuellen Speichers der Anwendung.
Vielleicht wäre es also eh besser, wenn du dir überlegst das in kleiner Stücke aufzuteilen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi 64 Speicherfragen

  Alt 6. Feb 2014, 21:07
Du hast einen Adressraum von 64^2 (OK, teilweise auch etwas weniger), aber Real hast du maximal RAM + Auslagerungsdatei.

PS: Das hat man auch schon mit 32 Bit.

Es gibt da Adresswerweiterungen, aber praktisch kannst du das auch einfach mit MMFs (Memory Mapped Files) machen, was aber nicht unbedingt Dateien seien müssen, aber bei 400 GB brauchst du sowieso eine Erweiterung.

MMFs kann man stückchenweise in den Speicher mappen und Windows sorgt da für das Cachen der Datei.

Wenn du einen zusammenhängenden "Stream" hast, dann brauchst du auch bei 64 Bit immenoch einen "zusammenhängenden" Speicherbereich, innerhalb des Virtuellen Speichers der Anwendung.
Vielleicht wäre es also eh besser, wenn du dir überlegst das in kleiner Stücke aufzuteilen.
Vielen Dank für die schnelle Antwort. bei 64^2 meinst Du wahrscheinlich 2^64. Das mit dem RAM wäre kein Problem. Kommt halt die entsprechende Maschine her. Das Betriebssytem (z. B. Win 8 Pro) kann ja mit den Speichermengen umgehen...

Was genau meinst Du mit Memory Mapped Files? Geht das in Richtung RAM-Disk? Über sowas habe ich schon seit Jahren nicht mehr nachgedacht. Eleganter wäre natürlich der Memory-Stream... Wie gesagt: Es wäre kein Problem da eine Liste mit Streams zu erzeugen und dann halt den entsprechenden Stream zu berechnen den man gerade für den Zugriff benötigt. Hätte auch den Vorteil, dass man mit mehreren Threads gleichzeitig auf verschiedene Streams zugreifen kann... Man macht dann halt 2 GB Blöcke oder so. Bei 200 Stück sind das dan auch 400 GB... Die Frage ist halt nur ob Delphi da irgendwie motzt bzw. ober der Memeory-Manager von Delphi überhaupt in der Lage ist das zu verwalten...

Vielen Dank nochmal

Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

AW: Delphi 64 Speicherfragen

  Alt 6. Feb 2014, 21:14
Was genau meinst Du mit Memory Mapped Files? Geht das in Richtung RAM-Disk? Über sowas habe ich schon seit Jahren nicht mehr nachgedacht. Eleganter wäre natürlich der Memory-Stream...
Eleganter wäre eigentlich schon die MMF. Dann sind vielleicht nicht mal die vollen 512GB nötig. (Kommt ein bisschen drauf an, wie "unvorhersehbar" die Zugriffe sind)

Zum SSD-Striping: Hilft eigentlich nicht viel weiter. Problem ist doch die Zugriffszeit/Latenz. Die ist bei der SSD knapp 10^6 mal so lang wie beim RAM. DAS ist das Problem
  Mit Zitat antworten Zitat
BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
504 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi 64 Speicherfragen

  Alt 6. Feb 2014, 21:31
Hallo zusammen,

das mit den MMFs ist die Lösung. Habe gerade mal etwas gegoogelt. Scheint wie gemacht für diese Problem zu sein. Anstelle der Position im Stream rechne ich mir halt den Pointer aus... Brauche dann nur noch Funktionen zum Laden und speichern des MMFs auf Platte.

VIELEN DANK

Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 00:57 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