bubble: minimalistisches vokabular vs. bordmittel

Beitrag lesen

Selbst wenn du php interne funktionen verwendest werden die intern wahrscheinlich auch ein foreach benutzen.
die internen funktionen werden aber hoffentlich wesentlich schneller in der ausfuehrung sein.

Yep, und im Falle von implode() vs foreach auch noch sehr viel schneller:

function t1($arr) {  
    $str = "";  
    foreach($arr as $element)  
        $str .= "$element,";  
    return substr($str,0,-1);  
}  
function t2($arr) {  
    return implode(",",$arr);  
}  
$arr = Array();  
for($i=0; $i<1000; $i++)  
    $arr[] = (string)$i;  
$t = microtime(true); for($i=0; $i<100000; $i++) t1($arr); var_dump(microtime(true)-$t);  
// float(27.302348852158)  
$t = microtime(true); for($i=0; $i<100000; $i++) t2($arr); var_dump(microtime(true)-$t);  
// float(3.3718700408936)  

Meine Vermuting ist, dass bei implode() intern die resultierende String-Menge zuerst ermittelt wird und dann ein Speicher der Größe reserviert wird, sodass dann nur noch die Daten hineinkopiert werden müssen.

Bei der foreach-Variante allerdings wächst der String immer weiter und dadurch muss dann wohl auch mal der gesamte Speicherbereich an eine andere Stelle umziehen und wird somit öfters umkopiert.

MfG
bubble

--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye