Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
MemoryMappedFile auch für mittelgrosse Dateien verwendbar?
Debiii
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Deutschland

Themenstarter:

MemoryMappedFile auch für mittelgrosse Dateien verwendbar?

beantworten | zitieren | melden

Hallo,

ich wollte eine kleine Angelegenheit ansprechen und zwar:

ich möchte Objektdaten zur Laufzeit paralell in den Arbeitsspeicher und in Die Datei schreiben. Wenn das Programm startet, sollen die Daten aus der Datei wieder in den Memorystream und von dort an kann/soll dann mit den Daten verfahren werden.

Ist es ebenso angebracht, hierfür auch MemoryMappedFile zu benutzen, ich weiß es ist eigtl. für IPC gedacht aber es scheint auch eine brauchbare Lösung hier zu sein oder wie seht ihr das. Wäre sehr dankbar über Antworten :)

Mfg

Debiii
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16112

beantworten | zitieren | melden

Es ist nicht nur für IPC gedacht; MMF verwenden sehr viele Programme, vor allem Datenbank-Anwendungen, zB auch MongoDB.
Ein Limit gibt es nur in der Theorie. Wenn eine Datei nicht in den Speicher passt, dann wird ein Chunk gebildet, sodass nur ein Teil der Datei im Speicher liegt.

Die MSDN ist sehr ausführlich bei MMF und da solltest Du alles zu diesem Thema finden.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Debiii
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Erstmal vielen Dank für die schnelle Rückmeldung!

@Abt
ich habe mich bereits in der MSDN erkundigt, da steht nur dass es sinnvoll für extrem große Dateien gut ist und da war ich ein wenig abgeschreckt das dass dann nicht sinnvoll in meinem Fall ist.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16112

beantworten | zitieren | melden

Du hast nicht ein Wort verloren, von welcher Größe wir sprechen.
Wobei die Größe ja fast egal ist. Geht ja auch um die Änderungshäufigkeit, was hier ein Vorteil ist.

Ich denke nur, dass Du mit MMF bei Deiner Anforderung mit Kanonen auf Spatzen schießt.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Debiii
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Ich vermute so im MB Bereich und wiederum so maximal(größer sollte es nicht werden)
Also bis zu 1GB mehr nicht

Das heisst totaler Overload :D und ich sollte es über die herkömmliche Variante: "erst nach MemStream und von da zu FileStream und dann von da wieder zurück zu Memstream?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16112

beantworten | zitieren | melden

Auch Du hast einen Edit-Button. Es gibt kein Grund 3 Posts in 80 Sekunden raus zu lassen, wenn man es auch rein-editieren kann, falls man etwas vergessen hat.
Hab die Beiträge zusammen geführt....

Was Du tun sollst und was nicht - hab ich nicht zu sagen; aber ich bleib bei der Aussage mit Kanonen und Spatzen.
Ich denke nicht, dass Du so eine enorme Last hast, dass sich das hier lohnt.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Debiii
myCSharp.de - Member



Dabei seit:
Beiträge: 21
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Ok danke dir :)
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

Naja, ich habe MMF auch Anfang 2000 in einem Projekt eingesetzt ( Linetracer für ISDN/S2M ) als Ringbuffer für die Daten.
Damals noch in C/C++, und das war für uns eher die einfachere Variante einen sicheren und persistenten Datenspeicher zu machen.
Zu dem Zeitpunkt sind wir mit 512MB-2GB ausgekommen.

Mit der neuen API ist das nochmal viel einfacher und da MS das ja auch für ihr Swapfile benutzt, ist es definitiv eine der am meisten getesteten Funktionen.

Ich wüsste nicht wo das mit Kanonen auf Spatzen schiessen ist.
MS SQL ist ja auch erst richtig besser bei GB Daten, ist deswegen die kleine Adressverwaltung auf SqlExpress basis mit Kanonen auf Spatzen schiesen?
private Nachricht | Beiträge des Benutzers