2010-02-11 3 views
0

Nous lisons des fichiers volumineux dans memorystream et les réutilisons dans plusieurs emplacements du code. Je me demandais simplement si c'était une meilleure idée d'obtenir des octets [] de fichiers et de les stocker dans une hashtable pour un tel scénario. De cette façon, nous pourrions fermer le flux de mémoire lorsque nous aurons terminé et en recréer un de la hashtable si nécessaire. Je me demande simplement s'il y a des inconvénients avec cette méthode. Merci NCache octet [] dans une table de hachage vs MemoryStreams

Répondre

1

Un avantage d'utiliser un byte[] plutôt qu'un MemoryStream est que le MemoryStream a plus d'état - il a un curseur. En particulier, deux threads pourraient facilement lire à partir du même tableau d'octets (en copiant la section qui les intéresse, etc.) alors que s'ils essayaient d'utiliser simultanément Stream.Read, ils pourraient ne pas obtenir les résultats attendus.

L'inconvénient de ces deux est qu'ils sont mutable :(

+0

Y at-il un avantage à convertir en base64string de byte [] et à le mettre en cache plutôt que octet [] –

+0

@np: Immuabilité Je suppose, mais c'est tout ce que je peux penser: il serait préférable de mettre en cache le tableau d'octets et de donner des copies aux appelants si vous voulez éviter le piétinement. –

0

Je me demandais s'il y a des inconvénients avec cette méthode.

Pour énormes fichiers? Quelle est la taille "énorme"? Combien de mémoire principale pouvez-vous utiliser?

+0

100 Mo, 200 Mo pour l'instant, nous traitons –

0

Si les fichiers sont vraiment grand, alors vous êtes mieux de ne pas les garder en mémoire en premier lieu. Vous devriez plutôt être en les lisant au fur et à mesure des besoins, afin de réduire l'utilisation de la mémoire

Questions connexes