C_Buster_G: Switsch() & function(); oder lieber if() ?

Hi,

Plane gerade ein etwas grösseres Projekt und überlege was sich besser bewährt...

Es geht dabei um die einzelnen function und wie ich sie aufrufen lasse...

Ist eine if() abfrage schneller wie die möglichkeit mit switch() und function() oder tut sich da nicht viel?

Was würdet ihr empfehlen?

Danke

MfG Chris

  1. Hallo,

    Was würdet ihr empfehlen?

    Ich empfehle Dir erst mal, Dich hinzusetzen, und Deine Frage richtig zu formulieren.

    Einsatzgebiete für if():

    * sehr einfach Abfragen (if (hat_versagt) beende_script();)
      * sehr komplexe Abfragen (if (a && b && (c || d)) xyz(); - ok das ist nicht sehr komplex, aber nur um das mal zu illustrieren)

    switch():

    * Multiple-Choice-Entscheidungen bei der Abfrage eines Wertes

    Hab' ich da noch was vergessen?

    Was das ganze mit function() zu tun haben soll, ist mir schleierhaft.

    Grüße,

    Christian

    1. Hallo,

      Was würdet ihr empfehlen?

      Ich empfehle Dir erst mal, Dich hinzusetzen, und Deine Frage richtig zu formulieren.

      Du würdest sie auch dann nicht verstehen...

      Einsatzgebiete für if():

      * sehr einfach Abfragen (if (hat_versagt) beende_script();)
        * sehr komplexe Abfragen (if (a && b && (c || d)) xyz(); - ok das ist nicht sehr komplex, aber nur um das mal zu illustrieren)

      Mehr kannst Du wohl auch nicht...

      switch():

      * Multiple-Choice-Entscheidungen bei der Abfrage eines Wertes

      Hab' ich da noch was vergessen?

      Ich hatte nicht nicht nach der ganzen Synthax gefragt aber danke...

      Was das ganze mit function() zu tun haben soll, ist mir schleierhaft.

      Durch was es besser ist die jeweiligen teil bereiche des Scriptes aufzurufen wie auch schon in meinem ersten Posting beschrieben...

      Hat dir schon mal jemand gefragt ob Du beschrenkt bist?
       Wenn nicht dann tu ich das..
       Antwort ist erbeten..

      Grüße,

      Zurück

      Christian <--Aroganter Hegel...

      1. Hallo, (heute bin ich freundlich drauf)

        Ich empfehle Dir erst mal, Dich hinzusetzen, und Deine Frage richtig zu formulieren.

        Du würdest sie auch dann nicht verstehen...

        Schade. Hätte Dir wirklich gerne geholfen.

        Ich hatte nicht nicht nach der ganzen Synthax gefragt aber danke...

        Ich hab' Dir auch keine Syntax angeboten. Ich habe Dir Einsatzzwecke dargelegt. Dass Du die Syntax kennst, habe ich vorrausgesetzt.

        Durch was es besser ist die jeweiligen teil bereiche des Scriptes aufzurufen wie auch schon in meinem ersten Posting beschrieben...

        Du meinst den Kontrollfluss, wie man den Strukturieren kann? Dann kommt es auf die größe des Codes, auf die Komplexität und auf das Maß an Wiederverwendbarkeit an. Evtl. sind auch include()s eine Lösung.

        Hat dir schon mal jemand gefragt ob Du beschrenkt bist?
        Antwort ist erbeten..

        Tja - wissenschaftlich gesehen ist jeder Mensch beschränkt. (in der Wahrnemung) aber du willst warscheinlich etwas anderes wissen.

        Ob ich beschränkt bin, kann ich Dir nicht sagen, aber ich habe eigentlich weltoffene Prinzipien. Kritik an sich kann ich aber vertragen. Sag' mir bitte, was Dich das denken lässt, und ich versuche mich zu bessern.

        Christian <--Aroganter Hegel...

        Hmmm. Das "Arroganter" nehme ich Dir nicht übel, aber über "Hegel" müssen wir reden...

        Grüße,

        Christian

        1. Hi,

          seid Ihr etwa schon fertig? Es fing gerade an, interessant zu werden. Ich hab doch keinen Fernseher!

          Nun mal los. Ich will was sehen für mein Geld. Im Moment tippe ich sowieso auf CS. Wer nimmt die Wetten an?

          Chris

          1. Hi Chris,

            Nun mal los. Ich will was sehen für mein Geld. Im Moment tippe ich sowieso auf CS. Wer nimmt die Wetten an?

            hast Du nicht bemerkt, dass wir uns versucht haben gegenseitig konstruktiv zu kritisieren? ;)

            Grüße,

            Christian

          2. Hi,

            seid Ihr etwa schon fertig? Es fing gerade an, interessant zu werden. Ich hab doch keinen Fernseher!

            Nun mal los. Ich will was sehen für mein Geld. Im Moment tippe ich sowieso auf CS.

            Der hat schon verloren wo er die erste Nachricht geschrieben hat..
            Die 2 anderen Hilfreichen Antworten sind wohl Beweiss genug...

            Wer nimmt die Wetten an?

            Chris

            1. Hi

              seid Ihr etwa schon fertig? Es fing gerade an, interessant zu werden. Ich hab doch keinen Fernseher!

              Nun mal los. Ich will was sehen für mein Geld. Im Moment tippe ich sowieso auf CS.

              Der hat schon verloren wo er die erste Nachricht geschrieben hat..
              Die 2 anderen Hilfreichen Antworten sind wohl Beweiss genug...

              ja ne... is klar >;)
              Ich glaube in der Tat, dass Christian dich bei einer sachlichen Diskussion unter den Tisch posten kann (wird).

              Wer nimmt die Wetten an?

              Ich. Gegen dich.

              [msg:trolleranz] <-- warum steht das nicht in der Faq und wann wird das eingebaut?

              Fabian

              1. Hi

                seid Ihr etwa schon fertig? Es fing gerade an, interessant zu werden. Ich hab doch keinen Fernseher!

                Nun mal los. Ich will was sehen für mein Geld. Im Moment tippe ich sowieso auf CS.

                Der hat schon verloren wo er die erste Nachricht geschrieben hat..
                Die 2 anderen Hilfreichen Antworten sind wohl Beweiss genug...

                ja ne... is klar >;)
                Ich glaube in der Tat, dass Christian dich bei einer sachlichen Diskussion unter den Tisch posten kann (wird).

                Ich glaube das ein 15 höchstens 16 Jähriger da erst garnicht mit reden sollte..
                Dein Hirn steckt dazu noch zu tief in der Puppertät..
                Und für sich spricht das man durchaus fragen nicht mit gegen fragen beantworten sollte( so wie CS )..

                Wer nimmt die Wetten an?

                Ich. Gegen dich.

                [msg:trolleranz] <-- warum steht das nicht in der Faq und wann wird das eingebaut?

                Fabian

                1. Hallo,

                  Ich glaube das ein 15 höchstens 16 Jähriger da erst garnicht mit reden sollte..

                  Was hat Fabians Alter mit seiner Diskussionswürdigkeit zu tun?

                  Dein Hirn steckt dazu noch zu tief in der Puppertät..

                  Schade dass Du Menschen so nach Äußerlichkeiten beurteilst.

                  Und für sich spricht das man durchaus fragen nicht mit gegen fragen beantworten sollte( so wie CS )..

                  Ich habe Dir nur eine Gegenfrage gestellt, weil ich Deine Frage nicht richtig verstehen konnte. Ich habe schon öfters "heftigere" Kritik geäußert und wollte Dich keinesfalls angreifen, sondern ich wollte Dir nur helfen. Aber wenn Du auf meine Hilfe verzichten kannst, bitte.

                  self.close();

                  Grüße,

                  Christian

                2. Hi

                  ja ne... is klar >;)
                  Ich glaube in der Tat, dass Christian dich bei einer sachlichen Diskussion unter den Tisch posten kann (wird).

                  Ich glaube das ein 15 höchstens 16 Jähriger da erst garnicht mit reden sollte..

                  oh, du warst auf meiner Homepage? Ich bin enttäuscht, dass du nichts hinterlassen hast... hätte ich was zum Löschen gehabt ;)

                  Dein Hirn steckt dazu noch zu tief in der Puppertät..

                  naja, solange ich Pubertät sagen kann (bzw. schreiben) bin ich nicht (mehr) befallen >;)

                  Und für sich spricht das man durchaus fragen nicht mit gegen fragen beantworten sollte( so wie CS )..

                  du weißt, was Polemik ist?

                  Fabian
                  ps: Intelligenz ist nicht vom Alter abhängig ;P

                  1. Hi Fabian,

                    da fiel us gestern ein Leitsatz ein:

                    (1)Wenn Dumme für Schlaue die Prüfungsbedingungen festlegen sind am Ende immer die Schlauen die Dummen. [(C) 2002]

                    Nun sollte man auch noch meinen Leitsatz [(C) 1989] hinzuziehen

                    (2)Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Humor diejenige, übe die eigenen zu lachen.

                    (3)Wenn also die Dummen die Welt regieren, weil sie sich das Leben nicht so schwer machen, dann solten wir gemeinsam darüber lachen - so dass sie es hören. Denn Lachen ist das Einzige, womit sie nicht umgehen können.

                    Heute habe ich etwas in der Richtung erlebt. Meine kleine Firma macht nun schon seit Jaaahren Ausbildung im IT-Bereich. Wir haben auch schon viele Praktikanten  gehabt, die entweder nach 10% Ihrer Zeit (halbes Jahr) das Handtuch geschmissen haben (ich habe keinen Nürnberger Trichter) oder ihre Prüfung vor der IHK mit Bravour geschafft haben. Und das ist bei der Zusammensetzung der Prüfungsausschüsse nicht leicht (siehe Abs. 1) Die Durchfallquote betrug in den letzten vier Prüfungen immer ungefähr 43-52%.

                    Einem der neuen Berufspraktikanten hat man heute gesagt, er könne bei mir kein Praktikum machen, da "der Betrieb nicht zugelassen" ist *schluck*. Ich bin Mitglied im IT-Ausschuss der örtlichen Kammer und halte alle Nase lang dort Fachvorträge, die den Saal füllen. Man hat mich schon mehrmals gebeten, in den Prüfungsausschuss zu kommen. Nun brat mir einer 'nen Storch...

                    Am Verhalten des entsprechenden Kollegen kannst Du sehen, was "Alter" als Qualitätszertifikat wert ist.

                    Irgendwie ist diese Welt perfide und die tolereanten und beweglichen Kräfte sollten langsam beginnen, sich (intelligent) zur Wehr zu setzen. Aber man sieht es ja an der Windkraft. Die wird auch abgelehnt, weil einfach ungeklärt ist, wohin der Windabfall kommt.

                    Ich erhöhe meine Wette auf Christian. Wie sind denn die Quoten?
                    Wir sollten mal als nächstes Projekt ein "Bewertungssystem" aufbauen. *gg*

                    Liebe Grüße aus http://www.bitworks.de

                    Tom

                    1. Nabend Tom,

                      da fiel us gestern ein Leitsatz ein:

                      (1)Wenn Dumme für Schlaue die Prüfungsbedingungen festlegen sind am Ende immer die Schlauen die Dummen. [(C) 2002]

                      sehr schön. Meine Glückwünsche zu dieser fundamentalen Wahrheit[tm] =)

                      Nun sollte man auch noch meinen Leitsatz [(C) 1989] hinzuziehen

                      (2)Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Humor diejenige, übe die eigenen zu lachen.

                      (3)Wenn also die Dummen die Welt regieren, weil sie sich das Leben nicht so schwer machen, dann solten wir gemeinsam darüber lachen - so dass sie es hören. Denn Lachen ist das Einzige, womit sie nicht umgehen können.

                      exakt.

                      Heute habe ich etwas in der Richtung erlebt. Meine kleine Firma macht nun schon seit Jaaahren Ausbildung im IT-Bereich. Wir haben auch schon viele Praktikanten  gehabt, die entweder nach 10% Ihrer Zeit (halbes Jahr) das Handtuch geschmissen haben (ich habe keinen Nürnberger Trichter) oder ihre Prüfung vor der IHK mit Bravour geschafft haben. Und das ist bei der Zusammensetzung der Prüfungsausschüsse nicht leicht (siehe Abs. 1) Die Durchfallquote betrug in den letzten vier Prüfungen immer ungefähr 43-52%.

                      Da solltest du desinfizieren, dann geht auch die Quote runter. (Sorry, is'n Kalauer =))

                      Einem der neuen Berufspraktikanten hat man heute gesagt, er könne bei mir kein Praktikum machen, da "der Betrieb nicht zugelassen" ist *schluck*. Ich bin Mitglied im IT-Ausschuss der örtlichen Kammer und halte alle Nase lang dort Fachvorträge, die den Saal füllen. Man hat mich schon mehrmals gebeten, in den Prüfungsausschuss zu kommen. Nun brat mir einer 'nen Storch...

                      *rotfl*

                      Am Verhalten des entsprechenden Kollegen kannst Du sehen, was "Alter" als Qualitätszertifikat wert ist.

                      ja. nix.

                      Irgendwie ist diese Welt perfide und die tolereanten und beweglichen Kräfte sollten langsam beginnen, sich (intelligent) zur Wehr zu setzen. Aber man sieht es ja an der Windkraft. Die wird auch abgelehnt, weil einfach ungeklärt ist, wohin der Windabfall kommt.

                      Na, der wird einfach so in die Luft gepustet! Unverantwortlich!

                      Ich erhöhe meine Wette auf Christian. Wie sind denn die Quoten?
                      Wir sollten mal als nächstes Projekt ein "Bewertungssystem" aufbauen. *gg*

                      Na hör mal, wir haben noch nichtmal unseren Artikel fertig ;-)

                      Fabian
                      [der heute früh schlafen geht, damit er morgen auch gewählt werden kann, denn dann hat seine Schule endlich einen Unfähigen an der Spitze der Schülerschaft]

                      1. Hi,

                        Fabian
                        [der heute früh schlafen geht, damit er morgen auch gewählt werden kann, denn dann hat seine Schule endlich einen Unfähigen an der Spitze der Schülerschaft]

                        Tu das. Erhol dich gut und zeigs denen Morgen (so ganz lieb von hinten rum *gg*)

                        Gute Nacht
                        Tom

                        PS: Deine Antwort mit dem Windabfall war gut. Die könnte auf einem Plakat oder in einem Werbespot von umweltorientierten Parteien kommen *gg*

                        1. Hi Tom,

                          Fabian
                          [der heute früh schlafen geht, damit er morgen auch gewählt werden kann, denn dann hat seine Schule endlich einen Unfähigen an der Spitze der Schülerschaft]

                          Tu das. Erhol dich gut und zeigs denen Morgen (so ganz lieb von hinten rum *gg*)

                          *lol* tu ich. der letzte Tag im Wahlkampf soll ja der wichtigste sein. (Hab ich erwähnt, dass es keine Gegenpartei gibt?)

                          Gute Nacht
                          Tom

                          Danke gleichfalls.

                          PS: Deine Antwort mit dem Windabfall war gut. Die könnte auf einem Plakat oder in einem Werbespot von umweltorientierten Parteien kommen *gg*

                          Gott bewahre, ich bin doch kein Grüner! >;)

                          Fabian
                          [g'nacht @ all]

                3. Gutten Abent,

                  seid Ihr etwa schon fertig? Es fing gerade an, interessant zu werden. Ich hab doch keinen Fernseher!

                  Nun mal los. Ich will was sehen für mein Geld. Im Moment tippe ich sowieso auf CS.

                  Der hat schon verloren wo er die erste Nachricht geschrieben hat..
                  Die 2 anderen Hilfreichen Antworten sind wohl Beweiss genug...

                  ja ne... is klar >;)
                  Ich glaube in der Tat, dass Christian dich bei einer sachlichen Diskussion unter den Tisch posten kann (wird).

                  Ich glaube das ein 15 höchstens 16 Jähriger da erst garnicht mit reden sollte..
                  Dein Hirn steckt dazu noch zu tief in der Puppertät..

                  lerrn Du ersdmahl Rächtschreipung!
                  Mancher sächzeenjährige ist eben noch nichd so verbraucht, wie tu.

                  Und für sich spricht das man durchaus fragen nicht mit gegen fragen beantworten sollte( so wie CS )..

                  Wer nimmt die Wetten an?

                  Ich wette auf Christian und Fabian.

                  Ich. Gegen dich.

                  Grüße aus http://www.braunschweig.de

                  Tom

                  1. Nabend Tom,

                    nett, dass du dich so für Christian und mich einsetzt, aber ich glaube, der Troll ist jetzt schon erlegt, denn er hat jetzt exakt 30 Minuten nicht getrollt, und ein normaler Troll ist dann gefangen denke ich.

                    Trollige Grüße,
                    Fabian
                    [apply for: Troll-(Jagd-)Lizenz]

                    1. Hi fabelhafter Fabian,

                      nett, dass du dich so für Christian und mich einsetzt, aber ich glaube, der Troll ist jetzt schon erlegt, denn er hat jetzt exakt 30 Minuten nicht getrollt, und ein normaler Troll ist dann gefangen denke ich.

                      Trollige Grüße,
                      Fabian
                      [apply for: Troll-(Jagd-)Lizenz]

                      Ich werde mal bei Chris vorsprechen, dass er dir mindestens eine befristete erteilt. Du weißt ja,  bei einem Sechzehnjährigen ist eine unbefristete Lizenz noch ungewöhhnlich. *ggg*

  2. Hallo

    Hi,

    Plane gerade ein etwas grösseres Projekt und überlege was sich besser bewährt...

    Es geht dabei um die einzelnen function und wie ich sie aufrufen lasse...

    Ist eine if() abfrage schneller wie die möglichkeit mit switch() und function() oder tut sich da nicht viel?

    Was würdet ihr empfehlen?

    Häufig ist switch der richtige weg .. v.a. bei komplexen Sachen. Etwas strukturiertere codes machen dir da das Leben viel einfacher.

    If ist nur sinnvoll wenn das Problem gering ist. Es kann aber schneller sein, weil du die function nicht aufrufst. (das ist es meistens aber nicht wert)

    Danke

    MfG Chris

    Marxus

  3. Hallo Chris,

    am schnellste wäre es, den richtigen Code (die Funktion) holen[tm] zu können, also zu wissen, welches Stück Code an der Reihe ist und nicht erst danach fragen zu müssen.

    Man kann in PHP auch ein Array mit Funktionsbezeichnern füllen und dann ainfach über den Index in das Array darauf zugreifen. Das nennt sich dann auch OOP (die Vorstufe davon). Hat andererseits den Nachteil, dass man dafür mehr Speicher benötigt, da man immer ALLE Möglichkeiten vorbereitet halten muss. Das ist das Los der OOP.

    Vergiss nicht, dass bei jedem Aufruf eines Scriptes erst der gesamte Variablen - und Funktionsvorrat in den Speicher geladen werden muss, interpretiert werden muss (die Bezeichnertabelle muss erstellt werden), und dann erst zur Verfügung steht.

    Aus dem Gesichtspunkt der für die Auswahl benötigten Zeit wird also ein OOP-Methodenaufruf am schnellsten gehen.

    Liebe grüße

    Tom

  4. Hi,

    ohne auf die MENSCHELEI da unten einzugehen, sei dir mitgeteilt, dass die Ausführung von switch() im Regelfall schneller abläuft, als ein Berg if()s und elseif().

    Allerdings nur wenn es sich (wie schon erwähnt) um eine "multiple choice" Sache handelt.
    Bei drei, vier einfachen Bedingungen reißt if() die Performance nicht sonderlich in den Keller, kommt aber drauf an, wie du if()st. Mit fetten RegExp in der Bedingung ist das aber (in PHP) ein Problem von denen und nicht von if().

    switch() "fördert" ggf auch die Übersichtlichkeit.
    Ich verwende sie dann, wenn ich unterschiedliche, fette includes() machen muß, was deiner funcion() Sache kwasie gleich kommt.

    Ob also eine funcion() oder ein include() bei if oder switch "schneller rennt" ist nicht das Problem, bei switch 'schaltet' PHP nur direkt zur funktion, bei if() muß PHP *immer* rumrechnen und evtl. auch Typkonvertierungen durchführen. Das 'kann', muss aber nicht langsamer gehen.

    Zum OOP Posting "unten" - Objekte na gut, wenn's Sinn macht. Ich sehe hier (erstmal) keinen Grund dafür ein Objekt zu bemühen, denn das muß ja auch erstmal instantiiert werden; mit entsprechendem Overhead.

    Also: wenn du 100 eindeutige Dinge als "Bedingung" vorliegen hast, bei denen einfache Operatoren wie < > = == und === genügen, dann switche, muß nur zwischen drei oder elf Möglichkeiten entschieden werden und sind dazu weitere Berechnungen {if (gaga() != blabl() )} erforderlich, die auf ein true/false herauslaufen, iffe.

    Vielleicht findet sich bei Zend ja ein Benchmark, der genaueres zur Performance von switch() und if() sagt.
    I doubt it.
    http://www.zend.com

    Bitte wählen Sie... jetzt()

    CirTap