@Cris désolé .C'est une citation MSDN Microsoft
Méthodologie
Dans cette expérience, deux classes seront comparées. Le StreamReader
et la FileStream
classe seront dirigés pour lire deux fichiers de 10K et 200K dans leur intégralité à partir du répertoire de l'application.
StreamReader (VB.NET)
sr = New StreamReader(strFileName)
Do
line = sr.ReadLine()
Loop Until line Is Nothing
sr.Close()
FileStream (VB.NET)
Dim fs As FileStream
Dim temp As UTF8Encoding = New UTF8Encoding(True)
Dim b(1024) As Byte
fs = File.OpenRead(strFileName)
Do While fs.Read(b, 0, b.Length) > 0
temp.GetString(b, 0, b.Length)
Loop
fs.Close()
Résultat
FileStream
est évidemment plus rapide dans ce test. Il faut 50% de temps supplémentaire pour StreamReader
lire le petit fichier. Pour le gros fichier, cela a pris 27% de temps supplémentaire.
StreamReader
recherche spécifiquement les sauts de ligne alors qu'il FileStream
n'en a pas Cela représentera une partie du temps supplémentaire.
Recommandations
Selon ce que l'application doit faire avec une section de données, une analyse supplémentaire peut nécessiter un temps de traitement supplémentaire. Considérez un scénario dans lequel un fichier a des colonnes de données et les lignes sont CR/LF
délimitées. Le StreamReader
travaillerait sur la ligne de texte à la recherche duCR/LF
, puis l'application effectuerait une analyse supplémentaire à la recherche d'un emplacement spécifique des données. (Pensiez-vous que String. SubString est livré sans prix?)
D'un autre côté, le FileStream
lit les données en morceaux et un développeur proactif pourrait écrire un peu plus de logique pour utiliser le flux à son avantage. Si les données nécessaires se trouvent dans des positions spécifiques dans le fichier, c'est certainement la voie à suivre car cela réduit l'utilisation de la mémoire.
FileStream
est le meilleur mécanisme de vitesse mais prendra plus de logique.