strtotime oder lieber "zu Fuß"?

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

  • strtotime oder lieber "zu Fuß"?

    Guten Tag

    Weiß jemand von euch, ob es sinnvoll ist die Funktion strtotime zu verwenden, oder ob diese sehr langsam ist und es deshalb ratsam ist, manche Sachen "zu Fuß" zu machen?

    Auf diese Frage bin ich durch den "Code-Schnipsel" zum Herausfinden der zeitumstellung gekommen, als jmd mktime und date dazu verdwendet hat um darauf zu kommen, und jemand anderes strtotime.

    Frage ist bloß: Was arbeitet schneller/effektiver?

    Vor kurzer Zeit habe ich einen icsParser in PHP geschrieben, wobei gerade bei den regelmäßigen Events sehr viel rechenaufwand nötig ist. Somit würde es sich für meinen Parser eventuell lohnen ihn zu optimieren, wenn die strtotime Funktion schneller als mktime+date arbeiten würde.

    Thx,

    Click
    Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

    Denk' mal drüber nach!

  • #2
    microtime, for! Zwei Werkzeige, mit denen du das selbst rausfinden kannst.
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Joar, mach einfach mal ein paar durchläufe und poste deine ergebnisse.

      Kommentar


      • #4
        Um dem Thread einen Sinn zu geben...

        Click spricht von diesem Thread.

        also ohne genauer zu testen, bin ich bei halbwegs vernünftigen Bedingungen zu folgenden Ergebnissen gekommen:

        Jahlives: 100
        TobiaZ: 250
        Poscht: 600

        Samit sollte klar sein, dass strtotime() einen Vorsprung gegenüber der mktime() variante hat. Dass die interative "Ausprobier"-Variante nicht zieht, dürfte wohl klar sein.

        Kommentar


        • #5
          Hab mal nen kleinen test gemacht, in dem es geht das Datum des 3. Mittwochs im Monat herauszufinden:

          PHP-Code:
          for($n  0$n 10$n++) {
            
          $dm date("m");
            
          $dY date("Y");
            
          $fom mktime(000$dm1$dY);

            
          $s microtime();
            for(
          $i 0$i 1000$i++) {
              
          $offset date("w"$fom);
              if(
          $offset 0$offset += 7;
              
          $offset += 14;
              
          $r mktime(000$dm$offset$dY);
            }
            
          $e microtime();
            echo 
          "Zu Fuss: ".($e $s)." <br />";

            
          $s microtime();
            for(
          $i 0$i 1000$i++) {
              
          $r =  strtotime("third Wednesday"$fom);
            }
            
          $e microtime();
            echo 
          "Mit strtotime: ".($e $s)." <br /> <br />";

          Ausgabe:

          Zu Fuss: 0.058324
          Mit strtotime: 0.052981

          Zu Fuss: 0.054852
          Mit strtotime: 0.04301

          Zu Fuss: 0.053549
          Mit strtotime: 0.046378

          Zu Fuss: 0.05803
          Mit strtotime: 0.043219

          Zu Fuss: -0.943195
          Mit strtotime: 0.035586

          Zu Fuss: 0.055809
          Mit strtotime: 0.039912

          Zu Fuss: 0.058448
          Mit strtotime: 0.041602

          Zu Fuss: 0.054525
          Mit strtotime: 0.042146

          Zu Fuss: 0.054506
          Mit strtotime: 0.03855

          Zu Fuss: 0.054849
          Mit strtotime: 0.040004
          strtotime scheint also schneller zu arbeiten. Somit bleiben einem doch ein paar Kopfschmerzen erspart
          Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

          Denk' mal drüber nach!

          Kommentar


          • #6
            strtotime scheint also schneller zu arbeiten. Somit bleiben einem doch ein paar Kopfschmerzen erspart
            Ist ja eigentlich auch kein Wunder - die Funktion ist direkt in C implementiert (der Parser (parse_date.c) ist nicht umbedingt der Hit, schneller als PHP aber allemal).
            Zuletzt geändert von tontechniker; 13.04.2008, 22:11.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar

            Lädt...
            X