Einzelnen Beitrag anzeigen
  #9  
Alt 08.03.2009, 19:26:54
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
AW: Regex Bedingung kann nicht erfüllt werden

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
$runs200000;
$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
}
?>

Geändert von mgutt (08.03.2009 um 19:28:42 Uhr)
Mit Zitat antworten