Danke für die Klasse, aber Du hast Login-Zwang ;)
Zitat:
also ein preg_replace mit arrays gefüttert is auf jeden fall schneller als für jede regex die preg_replace funktion aufzurufen.
|
Laut den verlinkten Benchmarks ist es nicht so, daher hatte ich es erwähnt, weil ich glaube, dass das eine Falschinformation ist, die dort verbreitet wird. Es ist logisch, dass wenn man vorher zwei Arrays definiert, dass dadurch die Performance negativ beeinflusst wird. Daher sollte man nie Arrays definieren, die man nicht mehrmals benötigt.
Mein Benchmark-Script für php4 ist sehr simpel aufgebaut:
PHP-Code:
<?php
function fmicrotime() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function meineTestfunktion() {
$var = 'Test';
}
// vars
$data = isset($_GET['data']) ? $_GET['data'] : array();
$round = isset($_GET['round']) ? intval($_GET['round']) : 0;
$round++;
$loops = 100;
$pause = 100; // milliseconds
$runs= 200000;
$start = array();
$end = array();
$dif = array();
// benchmark
?>
Runde: <?= $round ?><br />
<?php
$k = 'mt';
$start[$k] = fmicrotime();
$j = (string) $data[$k];
$j = intval($data[$k]{4}) + 3;
echo($j);
for ($i=0;$i<$runs;$i++) {
meineTestfunktion();
}
$end[$k] = fmicrotime();
$dif[$k] = $end[$k] - $start[$k];
echo('Aktuell: ' . $dif[$k] . ' => ');
if (isset($data[$k]) && $data[$k]) {
$dif[$k] = $dif[$k] + floatval($data[$k]);
echo('Schnitt: ' . ($dif[$k] / $round));
}
echo('<br />');
$urldata .= 'data[' . $k . ']=' . $dif[$k] . '&';
// loops
if($round >= $loops) {
echo('Fertig.<br />');
echo('<a href=".' . $_SERVER['SCRIPT_NAME'] . '">Neustart</a>');
}
else {
?>
<script type="text/javascript">
window.setTimeout('location.replace(".<?= $_SERVER['SCRIPT_NAME'] ?>?<?= $urldata ?>round=<?= $round ?>");', <?= $pause ?>);
</script>
<?php
}
?>