Paul: if-Schleifen

Moin,
was ist schneller:

10 verschachtelte if-Schleifen (die zu ca. 90% immer alle durchlaufen werden)
oder eine if-Schleife mit 10 Parametern?

Danke,
Paul

  1. hi,

    10 verschachtelte if-Schleifen (die zu ca. 90% immer alle durchlaufen werden)
    oder eine if-Schleife mit 10 Parametern?

    Wenn 90% aller "ankommenden" Daten in jede der Bedingungen passt frag doch einfach die 10% ab, die nicht verarbeitet werden...

    Ansonsten denke ich kannst du auch 10 Bedingungen abfragen, er muss intern sowieso jede der einzelnen Kriterien verifizieren.

    Gruss,
    Seppel

    1. Gruss,
      Seppel

      Danke.

  2. Hi,

    10 verschachtelte if-Schleifen (die zu ca. 90% immer alle durchlaufen werden)
    oder eine if-Schleife mit 10 Parametern?

    Da if keine Schleife ist und if keine Parameter hat, werden 10 if-Schleifen wegen ihrer Nichtexistenz in Null-Zeit durchlaufen, eine nichtexistente parametrierte if-Schleife ebenso.

    Was also willst Du wirklich wissen?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hello out there!

      Da if keine Schleife ist […]

      „Da soll nochmal jemand sagen, es gäbe keine if-Schleife …“ [[http://forum.de.selfhtml.org/archiv/2005/3/t104287/#m642940@title=Wer hat’s gesagt?]]

      See ya up the road,
      Gunnar

      PS: SELFHTML Suche nach 'if-Schleife'
       4 Suchergebnisse in 'Forums-Archiv 2007'
      59 Suchergebnisse in 'Forums-Archiv 2006'
      60 Suchergebnisse in 'Forums-Archiv 2005'
      67 Suchergebnisse in 'Forums-Archiv 2004'
      72 Suchergebnisse in 'Forums-Archiv 2003'
      88 Suchergebnisse in 'Forums-Archiv 2002'
      12 Suchergebnisse in 'Forums-Archiv 2001'
      12 Suchergebnisse in 'Forums-Archiv 2000'
       4 Suchergebnisse in 'Forums-Archiv 1999'

      --
      „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
      1. gudn tach!

        PS: SELFHTML Suche nach 'if-Schleife' [...]

        naja, da waren aber auch so manche meta-diskussionen dabei, z.b. sowas:
        </archiv/2004/9/t90684/#m544188>

        prost
        seth

  3. Hallo Paul,

    if-Schleifen ...

    Du meinst Bedingungen. Aber zu deiner Frage:
    Programmiertechnisch ist weder eine Bedingung mit 10 Abfragen

    if (a && b && c)

    noch eine Verschachtelung derselben

    ~~~javascript if (a)
          if (b)
            if (c)

      
    sinnvoll. Beide Varinaten sind äußert fehleranfällig, schwer zu lesen und wartungsunfreundlich. Die Schreibweise:  
      
        ~~~javascript
    if (!a)  
          return false;  
        if (!b)  
          return false;  
        if (!c)  
          return false;
    

    entspricht zwar nicht der reinen Lehre (ein Ausstiegspunkt je Funktion) ist aber wesentlich leichter zu lesen und problemlos zu erweitern falls mal eine elfte Bedingung hinzukommt.
    Die Geschwindigkeitsunterschiede dürften bei heutigen Prozessoren nicht messbar sein.

    HTH

    Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
    1. Du meinst Bedingungen. Aber zu deiner Frage:
      Programmiertechnisch ist weder eine Bedingung mit 10 Abfragen

      if (a && b && c)

      noch eine Verschachtelung derselben

      ~~~javascript

      if (a)

      if (b)
              if (c)

      
      >   
      > sinnvoll.  
        
      Das hängt sehr davon ab, was der Sinn der Bedingungen ist.  
        
      
      > Beide Varinaten sind äußert fehleranfällig, schwer zu lesen und wartungsunfreundlich. Die Schreibweise:  
      >   
      >     ~~~javascript
      
      if (!a)  
      
      >       return false;  
      >     if (!b)  
      >       return false;  
      >     if (!c)  
      >       return false;
      
      

      entspricht zwar nicht der reinen Lehre (ein Ausstiegspunkt je Funktion) ist aber wesentlich leichter zu lesen und problemlos zu erweitern falls mal eine elfte Bedingung hinzukommt.

      Aber sie ist nicht identisch zum vorherigen Code.

      if (Bedingung) { do_something }
       ist nicht das gleiche wie
      if (!Bedingung) { do_not_something }

      Die Geschwindigkeitsunterschiede dürften bei heutigen Prozessoren nicht messbar sein.

      Die Geschwindigkeit wird auch bei dem Bedingungsreihenkonstrukt maximal sein, sobald der Wahrheitswert der Bedingung feststeht. Und das ist bei UND-Verknüpfung der Fall, wenn der erste Wert zu FALSE evaluiert wird.

      1. Hallo,

        Aber sie ist nicht identisch zum vorherigen Code.

        if (Bedingung) { do_something }
        ist nicht das gleiche wie
        if (!Bedingung) { do_not_something }

        Sinn meines Postings war es einen dritten Weg aufzuzeigen. Mit durchschnittlichem Abstraktionsvermögen sollte man erkennen, dass  dieser nicht 1:1 in vorhandenen Programmcode eingesetzt werden kann.

        Die Geschwindigkeit wird auch bei dem Bedingungsreihenkonstrukt maximal sein, sobald der Wahrheitswert der Bedingung feststeht. Und das ist bei UND-Verknüpfung der Fall, wenn der erste Wert zu FALSE evaluiert wird.

        unbestritten. Unter dem Aspekt der reinen Prozessortakte hast du recht. Aber wie groß ist die Differenz zwischen der ersten Bedingung die zu false evaluiert und der zehnten?
        Aber das war auch nicht meine Intention. Was nützen mir ein paar Takte weniger wenn ich dadurch unwartbaren Spaghetticode habe?

        Grüße,

        Jochen

        --
        Kritzeln statt texten:
        Scribbleboard
        1. Danke Euch!

    2. gudn tach!

      Programmiertechnisch ist weder eine Bedingung mit 10 Abfragen

      if (a && b && c)

      noch eine Verschachtelung derselben

      ~~~javascript

      if (a)

      if (b)
              if (c)

      
      >   
      > sinnvoll. Beide Varinaten sind äußert fehleranfällig, schwer zu lesen und wartungsunfreundlich.  
        
      so pauschal ("aeusserst ...") stimme ich da nicht zu.  
        
      ausserdem kann man einiges davon ganz einfach verbessern durch andere code-formatierung, z.b.  
      ~~~javascript
        
      if(   a  
         && b  
         && c)
      

      oder von mir aus

        
      if(   a  
         && b  
         && c  
        )
      ~~~.  
        
      ob etwas "schwer zu lesen" ist, ist gerade in der programmierung sehr oft geschmackssache.  
        
      
      > Die Schreibweise:  
      >   
      >     ~~~javascript
      
      if (!a)  
      
      >       return false;  
      >     if (!b)  
      >       return false;  
      >     if (!c)  
      >       return false;
      
      

      entspricht zwar nicht der reinen Lehre (ein Ausstiegspunkt je Funktion) ist aber wesentlich leichter zu lesen und problemlos zu erweitern falls mal eine elfte Bedingung hinzukommt.

      genauso problemlos erweiterbar sind auch die anderen varianten.

      aber ansonsten bin ich ebenfalls der meinung, dass man i.a.r. um 10-fach verschachtelte bedingungen herumkommt, z.b. indem man verschiedene eigenschaften/bedingungen semantisch gruppiert, was im endeffekt vielleicht etwas mehr code bedeutet, aber u.u. mehr uebersicht bringt. das kommt jedoch alles immer _sehr_ auf die anwendung an.

      prost
      seth

      1. aber ansonsten bin ich ebenfalls der meinung, dass man i.a.r. um 10-fach verschachtelte bedingungen herumkommt, z.b. indem man verschiedene eigenschaften/bedingungen semantisch gruppiert, ...

        .. oder eine entsprechend benannte Funktion schreibt, bei heutigen Prozessorleistungen (in der Annahme das der OP nicht auf irgendwelchen exotischen Kleinrechnern arbeitet) sollte der Umweg keine Rolle mehr spielen.

        Struppi.

        --
        Javascript ist toll (Perl auch!)