Ich habe hier mal ein Programm geschrieben, das dem geneigten Forentheilnehmer etwas trivial erscheynen mag, das zu begreifen mir bislang jedoh nicht vergoennet war.
Will heißen: Ich will mit FileStream eine Datei einlesen und simultan in der Konsole ausgeben, wenn diese eingelesen ist, will ich den FileStream schließen, und dann eine Meldung in die Konsole schreiben: „Press any key to continue“. Wenn dann gedrückt wird, dann soll das Konsolenfenster verschwinden. Dies passiert auch, aber es dauert sehr sehr sehr lange bis „er“ soweit ist. Meine Frage ict also – wieso dauert denn das so lange? Die eingelesene Datei war ein docx-Dokument von iner halben DIN A 4 – Seite, also nicht viel.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileCopy
{
class Program
{
public static void Main()
{
String path = @"C:\Users\soHeisseIch\Desktop\textfile.docx";
try
{
using (FileStream fs = File.Open(path, FileMode.Open))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(b, 0, b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
fs.Close();
}
}
catch (Exception ee) { Console.WriteLine(ee.Message); }
Console.WriteLine("Press any key to continue");
Console.ReadKey();
}
}
}
Das Close kannst Dir sparen, da using() das bereits über Dispose() ausführt.
Nimm mal die Stopwatch-Klasse zur Hilfe und schau, was genau so lange braucht.
Dir ist aber schon bewusst, dass *.docx im Prinzip ein ZIP-File ist, in dem nachher das wirkliche Word-Dokument liegt?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Es ist eigenartig, nichts dauerte bei der Sache länger als 8ms, egal wo ich Stopwatch gestartet habe; es scheint fast so als sei im Hintergrund irgend etwas noch nicht beit.
Hast es auch im Release Modus getestet, oder nur im Debug-Modus?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Scheint in beiden Modi gleich lange zu dauern, ich habe "build solution" gemacht, ich bin in den Ordner "build" und habe die Echse laufen lassen, hat genauso lange gedauert :\
Kommentier mal die Consolenausgabe (Alsu nur die Zeile Console.WriteLine(..)) aus - die frisst einen erheblichen Anteil der Zeit auf!
Kontakt & Blog: www.giesswein-apps.at