@Cris sorry. Dies ist ein Zitat MSDN Microsoft
Methodik
In diesem Experiment werden zwei Klassen verglichen. Die StreamReader
und die FileStream
Klasse werden angewiesen, zwei Dateien mit 10 KB und 200 KB in ihrer Gesamtheit aus dem Anwendungsverzeichnis zu lesen.
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()
Ergebnis
FileStream
ist in diesem Test offensichtlich schneller. Das StreamReader
Lesen der kleinen Datei dauert zusätzlich 50% länger . Für die große Datei wurden zusätzlich 27% der Zeit benötigt.
StreamReader
sucht gezielt nach Zeilenumbrüchen, FileStream
tut dies aber nicht. Dies wird einen Teil der zusätzlichen Zeit ausmachen.
Empfehlungen
Abhängig davon, was die Anwendung mit einem Datenabschnitt tun muss, kann es zu einer zusätzlichen Analyse kommen, die zusätzliche Verarbeitungszeit erfordert. Stellen Sie sich ein Szenario vor, in dem eine Datei Datenspalten enthält und die Zeilen CR/LF
begrenzt sind. Das StreamReader
würde in der Textzeile nach dem suchenCR/LF
und dann würde die Anwendung zusätzliche Analyse durchführen, um nach einem bestimmten Speicherort für Daten zu suchen. (Hast du gedacht, String. SubString kommt ohne Preis?)
Auf der anderen Seite FileStream
liest das die Daten in Blöcken und ein proaktiver Entwickler könnte etwas mehr Logik schreiben, um den Stream zu seinem Vorteil zu nutzen. Wenn sich die benötigten Daten an bestimmten Stellen in der Datei befinden, ist dies sicherlich der richtige Weg, da dadurch die Speichernutzung gering gehalten wird.
FileStream
ist der bessere Mechanismus für die Geschwindigkeit, erfordert aber mehr Logik.