Was ist schneller?

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

  • #16
    hmm in welchen fällen denn???
    ich hab mal folgenden code in ein kleines script gepackt:
    Code:
    <?php
    error_reporting(E_ALL);
    $s="";
    if(!$s){
    	echo "haha\n";
    }
    ?>
    und es auf http://www.faltrock.de/test1.php geladen
    ... sagt nix. sogar nicht mit E_STRICT...
    mal abgesehn davon:
    http://de.php.net/manual/de/types.comparisons.php
    da kann man sehn, dass sich die version mit empty und boolean aufs haar gleichen. man benutzt nur mehr zeichen.
    blllubb

    Kommentar


    • #17
      Tausche $s mal gegen POST und schau den ersten Aufruf des Forms an. Da wird dir ein Fehler (Warning) ausgegeben.
      In deinem Beispiel haste $s ja gesetzt.
      Im Man steht
      empty() ist das Gegenteil von (boolean) var, außer dass keine Warnung erzeugt wird, wenn die Variable nicht gesetzt ist.
      Also ganz gleich sind die Versionen nicht
      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


      • #18
        jaa. ok. mit empty kann man halt nur keine unterscheidung machen, ob die variable nicht existiert oder einfach nur leer ist.
        blllubb

        Kommentar


        • #19
          Original geschrieben von wahsaga
          Wer Fragen nach der Performance solcher Kinkerlitzchen stellt, der programmiert vermutlich noch nicht mal ansatzweise performant.
          Ich muss mir alles selbst aneignen, da kommen auch solche kleinen Fragen über die man nur selten was liest und von euch Profis schnell und einfach beantwortet werden können. nur reines theoretisches lesen bringt mir nicht soviel, ich verstehe Sachen schneller wenn ich sie gleich durchführe und mache. Danke euch immer wieder für den Support, finde es klasse, dass hier auch noobs wie mir geholfen wird.
          Gruß,
          Peter

          Kommentar


          • #20
            [...] solche kleinen Fragen über die man nur selten was liest [...]
            manchmal hat das einen grund..

            Kommentar


            • #21
              Original geschrieben von Screw Driver
              Ich muss mir alles selbst aneignen,
              Ich würde heute dafür sorgen, dass die Variable $wert auf jeden Fall existiert, und dann ist

              if ($wert == '')
              {
              echo 'lesbarer';
              }

              Kommentar


              • #22
                ich wollte es mal testen und habe einen benchmark geschrieben:
                PHP-Code:
                // LEVEL WARNING, um auch ein nichtdefiniertes $value zu testen
                error_reporting(E_WARNING);

                function 
                getMicroTime()
                 {
                  list(
                $usec$sec)=explode(" "microtime());
                  return((float)
                $usec+(float)$sec);
                 }

                // Testset - verschiedene Werte
                $values=array('unset'''0' ''huhu'null);

                $loops=1000000;

                foreach(
                $values as $value)
                 {
                  if(
                $value==='unset')
                   unset(
                $value);
                    
                  echo 
                '<br />value: ';
                  
                var_dump($value);
                  echo 
                '<br />----------<br />';
                        
                  
                $start_time=getMicroTime();
                  for(
                $i=0$i<$loops$i++)
                   if(empty(
                $value));
                  echo 
                '(empty):<br /><b>'.(getMicroTime()-$start_time).'</b><br />';
                  
                flush();

                  
                $start_time=getMicroTime();
                  for(
                $i=0$i<$loops$i++)
                   if(
                $value=='');
                  echo 
                "(=='' ):<br /><b>".(getMicroTime()-$start_time).'</b><br />';
                  
                flush();
                 } 

                [edit] ich vollpfosten, hatte nicht beide schleifen geändert - habe jetzt $loops hinzugefügt, damit das nicht nochmal passiert.

                fazit: kein "nennenswerter" geschwindigkeitsunterschied.
                aber, falls die variable nicht gesetzt ist, ist empty ca. 10x schneller
                Zuletzt geändert von 3DMax; 21.09.2006, 01:05.

                Kommentar


                • #23
                  wow, ich hab das mal mit einem isset-teil ergänzt und siehe da:
                  empty ist sogar schneller als !isset($v)...
                  und !isset() || !$v ist noch langsamer.
                  blllubb

                  Kommentar


                  • #24
                    kann jemand evtl. noch vollständigkeitshalber die absoluten werte posten?

                    Kommentar


                    • #25
                      das kann auch von verschiedenen Faktoren(php version, prozessor...) abhängig sein, aber alle Tests haben bei mir gezeigt, dass empty schneller als $var=="" ist.
                      php 1.5.3a unter Windows

                      vergleich bei 1000000 wiederhholungen
                      value: NULL
                      ----------
                      (empty):
                      0.274160861969
                      (=='' ):
                      1.66423916817

                      value: string(0) ""
                      ----------
                      (empty):
                      0.298734903336
                      (=='' ):
                      0.330507993698

                      value: int(0)
                      ----------
                      (empty):
                      0.300463914871
                      (=='' ):
                      0.393393039703

                      value: string(1) " "
                      ----------
                      (empty):
                      0.300569057465
                      (=='' ):
                      0.444124937057

                      value: string(4) "huhu"
                      ----------
                      (empty):
                      0.310189008713
                      (=='' ):
                      0.437395095825

                      value: NULL
                      ----------
                      (empty):
                      0.298336982727
                      (=='' ):
                      0.309970140457
                      Slava
                      bituniverse.com

                      Kommentar


                      • #26
                        apropos: folgende schleife ist schneller:
                        PHP-Code:
                        for($i=$loops;$i>0;--$i){} 
                        wenn man viel in der schleife macht interessiert es vllt.
                        blllubb

                        Kommentar


                        • #27
                          Original geschrieben von Slava
                          aber alle Tests haben bei mir gezeigt, dass empty schneller als $var=="" ist.
                          kann ich so nicht bestätigen.
                          bei mir schwankt das bei jedem durchlauf. auffällig ist nur, dass bei einem ungesetzten value empty() immer sehr viel schneller ist.

                          man könnte den benchmark ja noch in eine schleife packen und dann min, max und durchschnitt ausgeben lassen - nur dazu habe ich jetzt keine lust

                          Code:
                          value: NULL 
                          ----------
                          (empty):
                          0.282141923904
                          (=='' ):
                          1.51684999466
                          
                          value: string(0) "" 
                          ----------
                          (empty):
                          0.338901996613
                          (=='' ):
                          0.310794115067
                          
                          value: int(0) 
                          ----------
                          (empty):
                          0.33438205719
                          (=='' ):
                          0.377346992493
                          
                          value: string(1) " " 
                          ----------
                          (empty):
                          0.322425842285
                          (=='' ):
                          0.44590306282
                          
                          value: string(4) "huhu" 
                          ----------
                          (empty):
                          0.321593046188
                          (=='' ):
                          0.439749002457
                          
                          value: NULL 
                          ----------
                          (empty):
                          0.335638046265
                          (=='' ):
                          0.281756162643

                          Kommentar


                          • #28
                            Original geschrieben von frodenius
                            apropos: folgende schleife ist schneller
                            die "schleifen-zeit" ist ja für alle tests gleich, also nicht relevant.

                            Kommentar


                            • #29
                              Original geschrieben von frodenius
                              apropos: folgende schleife ist schneller:
                              PHP-Code:
                              for($i=$loops;$i>0;--$i){} 
                              warum?

                              Kommentar


                              • #30
                                Original geschrieben von penizillin
                                warum?
                                habs auch gerade mal getestet

                                $i++ bzw. $i--

                                ist bei ca. 10.000.000 durchläufen ca. 2/10 sekunden langsamer als

                                ++$i bzw --$i

                                OffTopic:
                                ich wusste garnicht, wieviel "performance" man noch aus seinem code herauskitzeln kann

                                Kommentar

                                Lädt...
                                X