fastix®: DANKE - string nach bestimmten zeichen durchsuchen

Beitrag lesen

Moin!

Häää? Was ist da Hammerumständlich?

Schlecht lesbarer Vierzeiler vers. schlecht lesbarer Einzeiler.

Langsam? Zeige mir mal den Geschwindigkeitsunterschied!

  
<?php  
# Voreinstellungen  
  
# Gesetzte Variablen:  
$strDate = '12.1.2005';  
  
# Wiederholungen pro Testdurchlauf  
$intWiederholungen=10000;  
  
# Anzahl Testdurchläufe:  
$intTests=5;  
  
  
if (isset($_SERVER['HTTP_HOST'])) {  
   $bolToHTML=true;  
} else {  
   $bolToHTML=false;  
}  
  
  
# Tests:  
  
for ($k=0; $k<$intTests; $k++) {  
  
  
  ############ Variante 1 ##################  
  $intStartTime[$k][0]=microtime();  
  for ($i=0; $i<$intWiederholungen; $i++) {  
    preg_match('/(\d+)\.(\d+)\.(\d+)/', $strDate, $match);  
    $day   = $match[1];  
    $month = $match[2];  
    $year  = $match[3];  
  } #next Wiederholung  
  $intTime[$k][0]=GetDecEndtime($intStartTime[$k][0], microtime());  
  $intSumTime[0]=$intSumTime[0]+$intTime[$k][0];  
  
  
  ############ Variante 2 ##################  
  $intStartTime[$k][1]=microtime();  
  for ($i=0; $i<$intWiederholungen; $i++) {  
    list($intDay,$intMonth,$intYear) = explode('.', $strDate);  
  }  
  $intTime[$k][1]=GetDecEndtime($intStartTime[$k][1], microtime());  
  $intSumTime[1]=$intSumTime[1]+$intTime[$k][1];  
  } # next Test ($k)  
  
  
if ($bolToHTML) {  
?>  
<html>  
<head>  
<title>Test</title>  
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
</head>  
<body>  
<pre>  
<?php  
}  
  
for ($k=0; $k<$intTests; $k++) {  
  echo "\nDurchlauf $k:\n";  
  echo "Variante 1: ".$intTime[$k][0]."\n";  
  echo "Variante 2: ".$intTime[$k][1]."\n";  
}  
  
echo "---------------------------------------\n";  
echo "Summen:\n";  
echo "Variante 1: ".$intSumTime[0]."\n";  
echo "Variante 2: ".$intSumTime[1]."\n";  
echo "---------------------------------------\n";  
echo "Durchschnitte:\n";  
echo "Variante 1: ".$intSumTime[0]/($intWiederholungen*$intTests)."\n";  
echo "Variante 2: ".$intSumTime[1]/($intWiederholungen*$intTests)."\n";  
echo "---------------------------------------\n";  
if ($intSumTime[0] < $intSumTime[1]) {  
  echo "Ergebnis: Variante 1 ist schneller\n";  
}  
if ($intSumTime[1] < $intSumTime[0]) {  
  echo "Ergebnis: Variante 2 ist schneller\n";  
}  
if ($intSumTime[0] == $intSumTime[1]) {  
  echo "Ergebnis: Keine signifikanten Laufzeitunterschiede\n";  
}  
echo "...................Ende.....................\n\n";  
  
exit;  
  
# Funktionen:  
  
function GetDecEndtime($strStart, $strEnde) {  
  #echo "$strStart, $strEnde\n";  
  list($intBruchteilStart, $intSekundeStart)= explode(' ', $strStart);  
  list($intBruchteilEnde,  $intSekundeEnde) = explode(' ', $strEnde);  
  $intSekunden = $intSekundeEnde    - $intSekundeStart;  
  $intBruchteil= $intBruchteilEnde  - $intBruchteilStart;  
return $intSekunden+$intBruchteil;  
}  
  
if ($bolToHTML) {  
?>  
</pre>  
</body>  
</html>  
<?php  
}  
?>  

Ausgaben auf meinem Rechner:

fastix@trainer:~> php -q laufzeittest.php

Durchlauf 0:
Variante 1: 0.066468
Variante 2: 0.037833

Durchlauf 1:
Variante 1: 0.067877
Variante 2: 0.038036

Durchlauf 2:
Variante 1: 0.067119
Variante 2: 0.037485

Durchlauf 3:
Variante 1: 0.067762
Variante 2: 0.038137

Durchlauf 4:
Variante 1: 0.068756
Variante 2: 0.038459
---------------------------------------
Summen:
Variante 1: 0.337982
Variante 2: 0.18995
---------------------------------------
Durchschnitte:
Variante 1: 6.75964E-06
Variante 2: 3.799E-06
---------------------------------------
Ergebnis: Variante 2 ist schneller
...................Ende.....................

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix®

--
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development