Tach!
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.
Wenn ich den Quellcode richtig interpretiere, dann liegt meine Vermutung doch falsch.
Ja, und zwar weil in einem PHP-Array Werte aller möglichen Typen enthalten sein können. Diese hätten in einem ersten Schritt gegebenenfalls zu String konvertiert und irgendwo zwischengespeichert werden müssen.
Um einen Teil von seths Ausführungen auf den Punkt zu bringen: Code breaks your application. Dieser Merksatz ist so schön widersprüchlich. Man braucht doch Code für die Anwendung, wieso ist er nicht nur ihr Baumaterial sondern auch ihr Verhängnis? Eben weil mehr Code mehr potentielle Fehlerquellen und/oder Ansatzpunkte für nachträglich "eingeänderte" Fehler enthält.
Übrigens: Die Messanordnung mit einer for-Schleife mit sehr hoher Wiederholungsanzahl kann zwar generell einen Laufzeitunterschied aufzeigen, aber praxisrelevant sind die entstehenden Zahlen nicht. Besser wäre, zwei Geradeaus-Scripte zu erstellen und dann mit einem Tool wie ab (= Apache-Benchmark) ermitteln, wieviele Requests pro Zeiteinheit abgearbeitet werden können. Dabei sollte man sich nicht auf den ersten Durchlauf verlassen. Weitere können durchaus schneller werden, weil dann bereits Cache-Inhalte mitspielen können.
dedlfix.