Was ist schneller?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    nun, die namen der operanden sagen es eigetnlich schon:
    bei PRÄfix (lat. vor) wird die variable erst in/dekrementiert und dann "geholt", bei postfix wird sie erst danach verändert.
    PHP-Code:
    $a = array(0,1,2,3,4);
    $b 0;
    echo 
    $a[++$b] ; //=> 1
    echo $a[$b++];  //=> auch 1, $b ist aber 
    echo $b//=> 2 
    Zuletzt geändert von frodenius; 21.09.2006, 23:49.
    blllubb

    Kommentar


    • #32
      $a[$a++] ??

      das beantwortet nicht meine frage.

      Kommentar


      • #33
        pardon... ich bin schon etwas müde
        blllubb

        Kommentar


        • #34
          ich hab den "benchmark" mal mit bcompiler kompiliert, und siehe da, es wird wirklich bis um unmerkliche 2 zehntel schneller... (*toll*)

          und... man braucht diese umständliche funktion getMicroTime() gar nicht, microtime(true) liefert einem genau den wert den wir haben wollen, einen float-timestamp.
          blllubb

          Kommentar


          • #35
            OffTopic:
            ... ich kann einfach nicht widerstehen hier OT einzubringen:

            Heutzutage dürfte (oder besser sollte!) es nicht mehr darum gehen 0.001 Sekunde oder 2KB irgendwo zu sparen und dafür "kryptischen" Code zu fabrizieren!

            wenn mir eine foreach-Schleife am logischsten erscheint, dann werde ich es mit ihr umsetzen (in der Annahme, dass es den meisten anderen auch am logischsten erscheinen wird)

            0.05 sek zu sparen und dafür beim Coden jedes Mal 5 sek länger hinschauen zu muss, sollte keine Alternative sein.
            Das Ziel ist lesbarer Code und nicht absolute Performance!




            ... Fachsimpeln und Spaß beim Benchmarken ist dennoch angebracht, solange es der Information und dem Zeitvertreib gilt
            [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

            [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

            [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
            (from here)

            Kommentar


            • #36
              du hast vollkommen recht, brauchst es noch nicht mal als ot zu markieren.

              erst wenn in deiner anwendung eine schleife tatsächlich 1 mio. mal ausgeführt werden muss (und es lässt sich nicht vermeiden), sollte man sich gedanken um solchen "performanz"-unterschied machen. dass es ihn gibt ist zweifellos. dass er relevant wird - eher selten (und für die überwiegende anzahl leser dieses forums sogar verdammt selten).

              Kommentar


              • #37
                erst wenn in deiner anwendung eine schleife tatsächlich 1 mio. mal ausgeführt werden muss (und es lässt sich nicht vermeiden), sollte man sich gedanken um solchen "performanz"-unterschied machen.
                Womit wir beim Thema Primzahlen wären An einer Implementation des Primsiebes kann man die Performanceauswirkungen sehr anschaulich testen. Eine Funktion oder ein Vergleich bedeutet ja gemeinhin, dass der Code langsamer werden würde v.a. wenn die Fkt innerhalb einer milionenfach durchlaufenen Schleife befindet. Handkehrum kann eine Funktion in einer solchen Position durchaus eine sehr deutliche kürzere Laufzeit nach sich ziehen. Wenn durch den Einsatz der Fkt unnötige Berechnungen auf/oder gegen null reduziert werden können.
                Und das ist bei Primen definitiv der Fall.
                Ich stimme aber Meillo und penizilin 100% zu, dass es für die meisten Anwendungen völlig irrelevant ist. Und das bei den meisten Anwendungen die Lesbarkeit des Codes im Vordergrund stehen sollte und nicht irgendwelche Mikrosekunden.

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #38
                  also in der regel würde ich für diese zwecke isset oder empty verwenden. $var=="" ist eher der fall für ein if, wenn die variable gesetzt ist, was man allein darin sieht, dass es bei gesetzen error_reporting(E_ALL); ein notice ausgibt.

                  Nun sollte die eigentliche frage sein,
                  welche funktion von diesen: schneller durchläuft:

                  if(empty($var){
                  }

                  if(isset($var){
                  }

                  dies spielt wirklich nur eine rolle wenn man es häufig durchlaufen lässt.
                  wobei dabei meines wissens nach empty schneller sein wird.
                  Ich persönlich bevorzuge von diesen varianten empty.
                  Webdesign und Webentwicklung - Plunix.de

                  Kommentar


                  • #39
                    also, wie oben schon gesagt hab ich isset auch noch getestet:
                    isset ist an sich schneller als empty, aber sie sagen ja etwas gegensätzliches aus.
                    !isset ist wieder langsamer als empty.

                    aber die unterschiede sind wirklich hanebüchen
                    blllubb

                    Kommentar

                    Lädt...
                    X