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