Hallo,
ich habe eine Funktion, die einen String auf bestimmte Zeichenfolgen prüft. Wenn eine dieser Bedinungen zutrifft, soll true zurück geliefert werden. Wenn keine Bedinungung zutrifft, dann false.
//Edit: true und false verwechselt
Macht es Sinn, die einzelnen Bedinungen parallel in Threads aufzuteilen, um die Performance zu steigern?
Hier der verkürzte Beispielcode:
private bool Filtered(string s)
{
if (s.StartsWith("Closed session for "))
{
return true;
}
if (s.StartsWith("Opened session for "))
{
return true;
}
if (s.StartsWith("Starting replication with server "))
{
return true;
}
if (s.StartsWith("Finished replication with server "))
{
return true;
}
if ((s.StartsWith("Router: Transferred ")) && (s.Contains(" messages to ")))
{
return true;
}
return false;
}
Vielen Dank für eure Hilfe
Christoph
Ich finde sowas gehört zu den basics und du kannst mit dem ODER Operator arbeiten ||
Grüße
Macht es Sinn, die einzelnen Bedinungen parallel in Threads aufzuteilen, um die Performance zu steigern?
Nein - ohne Wenn und Aber. Hier Parallelität einzuführen wird das ganze sogar langsamer machen; garantiert.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo SlyFox,
der Hinweis "premature optimization is the root of all evil" sollte hier nicht fehlen.
herbivore
Das sieht so aus als würde die Methode sehr oft aufgerufen werden für viele Elemente. Du kannst das parallelisieren und die Elemente parallel abarbeiten, wenn du performance Probleme hast. Trotzdem hab ich noch 2 Anmerkungen zu deinem Beispiel Code.
Diese ganzen If Abfragen lassen sich sehr schön kurz als ein boolscher Ausdruck schreiben. Etwa so:
private bool Filtered(string s)
{
return s.StartsWith("Closed session for ")
|| s.StartsWith("Opened session for ")
|| s.StartsWith("Starting replication with server ")
|| s.StartsWith("Finished replication with server ")
|| (s.StartsWith("Router: Transferred ") && s.Contains(" messages to "));
}
Das machts etwas lesbarer. Dann noch eine Sache. Ich würde mir überlegen die Methode umzubennenen. Mir z.B. ist nicht klar was sie tut. Ist sie true, wenn ein Element in der Auflistung sein soll, oder ist sie true wenn nicht, also filtert sie raus?