ursus contionabundo: Datum kürzen

Beitrag lesen

"Schnell" ist eine hohle Phrase, wenn du nicht gemessen hast

Soso. Dann messen wir doch einfach mal:

<?php 
function dedlfix ( $input ) {
   return date( 'd.m.y', strtotime( $input ) );
}

function ursus( $date ) { 
	return (
		substr( $date, 8, 2)  . '.'
	  . substr( $date, 5, 2 ) . '.'
	  . substr( $date, 2, 2 )
   ); 
}

$Imax = 1000000;
$string = '2019-07-05';

$Tstart = microtime(true);
for ( $i=0; $i < 10000; $i++ ) {
	$dummy = dedlfix( $string );
}
echo "Methode dedlfix: " . ( microtime(true) - $Tstart ) , "\n";

$Tstart = microtime(true);
for ( $i=0; $i < 10000; $i++ ) {
	$dummy = ursus( $string );
}
echo "Methode ursrus : " . ( microtime(true) - $Tstart ) , "\n";

Resultate:

Methode dedlfix: 0.085968971252441
Methode ursrus : 0.018429040908813

Die Vorhersage war nicht schwierig weil strtotime ziemlich viel macht.

Für Performance-Optimierung gilt die Faustregel: Machen, wenn es zu spät ist. Zuerst sollte man den Code möglichst lesbar und wartungsfreundlich notieren.

Jetzt ist mir wenigstens klar, dass da jemand mein Zeug negativ bewertet (und dann schweigt) mit dessen Vorgehensweisen und Erkenntnissen ich wohl kaum einverstanden sein kann. Was Du da ansagst läuft nämlich auf "Schnell zusammenschießen und falls der Kunde sich beklagt erst mal auf ihn und dessen Hardware zeigen und erst nach einem Nachweis durch einen vom Gericht bestellten Sachverständigen nach den - hier offensichtlichen und ohne Profiler erkennbaren - Performancebremsen schauen" hinaus.

0 44

Datum kürzen

  1. 1
    1. 0
      1. 0
  2. 0
  3. 0
    1. 0
      1. 0
      2. 0
        1. 0
        2. 0
          1. 0
            1. 0
              1. 0
                1. 0
                  1. 0
                    1. 0
                      1. 0
                        1. 0
                  2. 1
                    1. 0
                      1. 0
                        1. 0
                          1. 0
                            1. 0
                            2. 0

                              microtime(true)

                              1. 0
                                1. 0
                                  1. 0
                                    1. 5
                              2. 0
                              3. 0
                                1. -1

                                  Kann passieren

                          2. 0
                            1. 0
                      2. 0
                        1. 0
                      3. 0
                        1. 0
                          1. 0
                            1. 0

                              PS: Benchmark Code

                            2. 0
                              1. 0
      3. 0