kalleberlin
Lieutenant
- Registriert
- Feb. 2005
- Beiträge
- 853
Hallo liebe F´bler 
Diesmal möchte ich euch nicht mit Syntaktischen fehlern "bewerfen", nein diesesmal bräuchte ich ein wenig Nachhilfe in "Performance" Programmierung.
Worum gehts?
Ich möchte eine eigentlich relativ kleine Datei mit ~30k Zeilen nach bestimmten kriterien Auswerten. Um welche kriterien es sich handelt, das bestimmt der Benutzer selber. Die kriterien ansich, definieren eigentlich nichts anderes als bestimmte Strings.
Wenn der Benutzer aber nun entscheided, sich diese ganze Datei an einem Stück anzusehen, dauert das komischerweise relativ lange (wir reden von ~30 sekunden).
Was mache ich?
Hier mal mein Code (gekürzt aufs wesentliche
):
Kann es sein das die richTextBox der langsame Teil ist? Denn sobald ich einfach mal die Datei "durchjage", sprich die Zeilen einfach nur mal kurz einlese, dauert das nichtmal 2 Sekunden.
Für Hilfe bin ich euch wie immer dankbar
Diesmal möchte ich euch nicht mit Syntaktischen fehlern "bewerfen", nein diesesmal bräuchte ich ein wenig Nachhilfe in "Performance" Programmierung.
Worum gehts?
Ich möchte eine eigentlich relativ kleine Datei mit ~30k Zeilen nach bestimmten kriterien Auswerten. Um welche kriterien es sich handelt, das bestimmt der Benutzer selber. Die kriterien ansich, definieren eigentlich nichts anderes als bestimmte Strings.
Wenn der Benutzer aber nun entscheided, sich diese ganze Datei an einem Stück anzusehen, dauert das komischerweise relativ lange (wir reden von ~30 sekunden).
Was mache ich?
Hier mal mein Code (gekürzt aufs wesentliche
PHP:
private void btnShowChat_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
dateTimeStart.CustomFormat = "HH:mm:ss";
dateTimeStart.Format = DateTimePickerFormat.Custom;
dateTimeStop.CustomFormat = "HH:mm:ss";
dateTimeStop.Format = DateTimePickerFormat.Custom;
Form2 server = new Form2();
ChatLog chatwindow = new ChatLog();
chatwindow.richChatLog.Clear();
String sLine = "";
String n = "\n";
String Nick = Convert.ToString(listBox1.SelectedItem);
String tempA = getStartTime();
String tempB = getStopTime();
tempA = tempA.Replace(":", "");
tempB = tempB.Replace(":", "");
int startTime = Convert.ToInt32(tempA);
int stopTime = Convert.ToInt32(tempB);
int currentTime = 0;
int lines = 0;
string bline = "";
try
{
StreamReader fileb = new StreamReader(server.getServerLogPath() + "\\chat.log");
while (bline != null)
{
bline = fileb.ReadLine();
lines++;
}
StreamReader file = new StreamReader(server.getServerLogPath() + "\\chat.log");
progressBar1.Maximum = lines;
progressBar1.Step = 1;
String Date = GetDate();
while (sLine != null)
{
sLine = file.ReadLine();
progressBar1.PerformStep();
//get time from current string
if (sLine != null && !sLine.Equals("") && checkCurrentTime.Checked == true)
{
String[] timeInFile = sLine.Split(' ');
String time = timeInFile[2];
time = time.Replace("]", "");
time = time.Replace(":", "");
if (!time.Equals(""))
currentTime = Convert.ToInt32(time);
}
if (checkShout.Checked == false && checkTrade.Checked == false
&& checkPrivate.Checked == false && checkAll.Checked == false
&& checkParty.Checked == false && checkClan.Checked == false
&& checkAlliance.Checked == false )
{
if (sLine != null && listBox1.SelectedItem == null)
{
if (sLine != null && sLine.Contains(Nick))
while (sLine != null)
{
chatwindow.richChatLog.AppendText(sLine + n);
sLine = file.ReadLine();
progressBar1.PerformStep();
}
}
}
if (checkShout.Checked == true && checkDate.Checked == false)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("SHOUT"))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkShout.Checked == true && checkDate.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("SHOUT") && sLine.Contains(Date))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkTrade.Checked == true && checkDate.Checked == false)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("TRADE"))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkTrade.Checked == true && checkDate.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("TRADE") && sLine.Contains(Date))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkAll.Checked == true && checkDate.Checked == false)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("ALL") && !sLine.Contains("ALLIANCE"))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkAll.Checked == true && checkDate.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("ALL") && !sLine.Contains("ALLIANCE")
&& sLine.Contains(Date))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkPrivate.Checked == true && checkDate.Checked == false)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("TELL"))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkPrivate.Checked == true && checkDate.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("TELL") && sLine.Contains(Date))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkParty.Checked == true && checkDate.Checked == false)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("PARTY"))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkParty.Checked == true && checkDate.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("PARTY") && sLine.Contains(Date))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkClan.Checked == true && checkDate.Checked == false)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("CLAN"))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkClan.Checked == true && checkDate.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("CLAN") && sLine.Contains(Date))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkAlliance.Checked == true && checkDate.Checked == false)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("ALLIANCE"))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkAlliance.Checked == true && checkDate.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && sLine.Contains("ALLIANCE") && sLine.Contains(Date))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkCurrentTime.Checked == true && checkDate.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && currentTime >= startTime && currentTime <= stopTime
&& sLine.Contains(Date))
chatwindow.richChatLog.AppendText(sLine + n);
}
if (checkCurrentTime.Checked == true)
{
if (sLine != null && sLine.Contains(Nick) && currentTime >= startTime && currentTime <= stopTime)
chatwindow.richChatLog.AppendText(sLine + n);
}
}
file.Close();
progressBar1.Value = 0;
this.Cursor = Cursors.Default;
chatwindow.Show();
}
catch (FileNotFoundException ex)
{
MessageBox.Show(ex.Message);
}
catch (DirectoryNotFoundException exx)
{
MessageBox.Show(exx.Message);
}
}
Für Hilfe bin ich euch wie immer dankbar
Zuletzt bearbeitet:
(//Quellcode vervollständigt)