2010-02-25 2 views
17

J'aimerais savoir si quelqu'un a essayé les nouvelles fonctionnalités des fichiers Mappage de mémoire .NET 4.0? Je sais qu'ils sont aussi vieux que le système d'exploitation, mais la gestion native dans .NET est nouvelle.. Mappage des fichiers mappés en mémoire .NET 4.0

Quelqu'un at-il pu tester cela et dire quelque chose au sujet de la performance? Je suis très intéressé par le temps d'accès aux parties aléatoires du fichier binaire, la vitesse d'écriture et ainsi de suite. La comparaison des performances avec WinAPI MMF natif serait également agréable.

Merci!

+0

aucune idée bro ne vous obtenez aucun point de repère sur le réseau –

+0

non, je ne trouve pas de nombres solides ... seulement les spécifications techniques et les avantages. – michajas

Répondre

4

Les fichiers mappés en mémoire dans .NET 4.0 (dans le nouvel espace de noms System.IO.MemoryMappedFiles) enveloppent simplement l'API Win32 pour les fichiers mappés en mémoire.

Cela signifie qu'ils sont aussi rapides que possible. C'est le même mécanisme que celui utilisé pour charger les assemblys .NET en mémoire. En termes de numéros de temporisation réels, cela dépendra de 32 bits par rapport à 64 bits, combien de mémoire vous avez, la taille des fichiers, le (s) modèle (s) d'accès et, dans une large mesure, le type de matériel physique.

Ref: Memory-Mapped Files

+0

merci, je sais cette référence, plus précis pour cette question devrait être ce lien: http://msdn.microsoft.com/en-us/library/ms810613.aspx (c'était sur la page que vous avez mentionné). Je pense, je ferai moi-même quelques cas de test et posterai des résultats ici. Mais, peut-être que quelqu'un les avait déjà fait? – michajas

+0

"Mais, peut-être que quelqu'un les avait déjà fait?" - les chiffres réels dépendront d'un certain nombre de facteurs, mentionnés ci-dessus, ce qui est probablement la raison pour laquelle il n'existe pas de référence standard disponible. –

+0

Je connais ces facteurs, mais je ne pense pas au benchmark standardisé, mais aux résultats avec un cas de test complet (hardware etc.). Ce serait mieux si elles étaient comparées avec d'autres méthodes comme FileStream etc. Je pose cette question parce que je vais devoir travailler avec de gros fichiers (plus de 10 Go) et lire des données aléatoires de leur part. Je veux savoir que MMF est le meilleur choix :) – michajas

0

En question suivante j'ai fait un test de performance de MemoryMapped fichiers par rapport à la norme IO:

Disadvantages of using memory mapped files

je ne pouvais trouver nay gros inconvénients pour mes besoins, la performance est environ 4x plus rapide pour les fichiers mappés en mémoire et dans la question, vous pouvez trouver quelques astuces intéressantes sur la façon dont ces fichiers fonctionnent et ce qu'il faut prendre en compte.

0

Lors de mes tests, les performances de .NET 4.5 MMF étaient d'environ 40% de celles des appels WinAPI natifs, c'est-à-dire plus de deux fois plus lentement.

Questions connexes