Hallo,
Da ich leider gerade nicht weiter weiß, wende ich mich an die Community.
Folgender Code funktioniert bei einem Textfile mit 273kb perfekt, bei 5,8MB wird er EXTREM träge und langsam:
using (FileStream mReadStream = new FileStream(file, FileMode.Open, FileAccess.Read))
{
using (StreamReader mStreamReader = new StreamReader(mReadStream))
{
using (FileStream mWriteStream = new FileStream(file.Replace(".txt", "_premup.txt"), FileMode.Create, FileAccess.Write))
{
using (StreamWriter mStreamWriter = new StreamWriter(mWriteStream))
{
string CurrZeile;
string[] CurrStrings;
char[] splitChar = new char[] { '\t' };
decimal CurrValue;
decimal LastIntervall = 0;
decimal CurrDelta = 0;
decimal LastDelta = 0;
int CurrFrame = 0;
int LastFrame = 0;
string LastString = "";
bool negativDiff = false;
/*
* Group5+6: Steuerzeichen -> GPS-Zeit -> Weg -> ID
*/
while (!mStreamReader.EndOfStream)
{
CurrZeile = mStreamReader.ReadLine();
CurrStrings = CurrZeile.Split(splitChar);
if (CurrStrings.Length < 4)
break;
if (!decimal.TryParse(CurrStrings[2], out CurrValue) || !Int32.TryParse(CurrStrings[3], out CurrFrame))
{
m_error += "\r\nWrong File Format!";
return false;
}
if ((LastFrame != 0 && CurrFrame != 0) && (CurrFrame - LastFrame != 1))
{
m_error += "\r\n" + file.ToString() + ": Event-IDs nicht konstant steigend!";
return false;
}
CurrDelta = CurrValue - LastIntervall;
if (CurrDelta < 0 && !negativDiff)
{
m_error += "\r\n" + file.ToString() + ": Event mit ID " + CurrStrings[3] + " hat eine negative Differenz!";
negativDiff = true;
if (!deletenegativDiff)
{
mStreamWriter.WriteLine(LastString);
countdata++;
continue;
}
}
if (!deletenegativDiff && negativDiff)
{
mStreamWriter.WriteLine(LastString);
countdata++;
negativDiff = false;
}
else if (LastIntervall == 0)
{
CurrDelta = 2;
}
else if ((CurrDelta + LastDelta) > maxdelta)
{
mStreamWriter.WriteLine(LastString);
countdata++;
}
else
{
m_error += "\r\n" + file.ToString() + " Event mit ID " + LastString.Split(splitChar)[3] + " gelöscht!";
m_sumDelted++;
CurrDelta += LastDelta;
}
LastString = CurrZeile;
LastDelta = CurrDelta;
LastIntervall = CurrValue;
}
mStreamWriter.WriteLine(LastString);
}
}
}
}
Ich versteh nur nicht, warum bei einer 273 kb datei das ganze ms dauert, und bei 5,8MB ewig braucht ..
Vielen dank für jede Hilfe
lg
PhilHol
Oh mann wie peinlich .. ja du hast recht ! .. vielen dank! .. Hab schon alles umgeschrieben und anders verschachtelt .. aber so "einfache" dinge hab ich depp net geachtet ..
.. D.h. performance geht runter wenn ich an einem String was drann hänge laufend?