Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Abprüfen mehrerer Bedinungen in einzelnen Threads?
SlyFox
myCSharp.de - Member



Dabei seit:
Beiträge: 234
Herkunft: Köln

Themenstarter:

Abprüfen mehrerer Bedinungen in einzelnen Threads?

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von SlyFox am .
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

Ich finde sowas gehört zu den basics und du kannst mit dem ODER Operator arbeiten ||

Grüße
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16152

beantworten | zitieren | melden

Zitat von SlyFox
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 - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo SlyFox,

der Hinweis "premature optimization is the root of all evil" sollte hier nicht fehlen.

herbivore
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1407

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers