phpbar.de logo

Mailinglisten-Archive

[php] WG: Linefeed mit br ersetzen

[php] WG: Linefeed mit br ersetzen

Martin Samesch phpcenter at theraphosidae.net
Die Okt 21 19:27:28 CEST 2003


Hi Thomas,

On Tue, Oct 21, 2003 at 05:41:41PM +0200, Thomas Langfeld wrote:
> > > Die Lösung   $new = preg_replace('/\r\n|\r|\n/', '<br>', $string);
> > > von Thomas Langfeld ist IMHO das optimum.
> >
> > Eine Lösung ist es, aber mich würde interessieren inwiefern diese
> > Lösung das Optimum darstellt.
> >
> > Ich behaupte, dass folgendes bezüglich Performance ca. ein Fünftel
> > der Zeit benötigt:
> >
> >   $txt = str_replace ('\r\n', '\n', $txt);
> >   $txt = str_replace ('\r', '\n', $txt);
> >
> >   $txt = str_replace ('\n', '<br>', $txt);
> 
> Hmm, Behauptungen interessieren aber solange nicht, bis sie bewiesen, oder
> wenigstens durch Tests untermauert wurden.

Stimmmt. War auch provokativ formuliert.

Natürlich habe ich es vorher getestet. Und zwar mit dem
max_Loadchecker

  http://phpresource.partners.phpclasses.org/browse.html/package/85

Und mit folgendem Skript:

<?php
include ("/var/www/max/LoadChecker.inc");
$Clock = new max_LoadChecker;

function txt2html($txt)
{
  $txt = preg_replace('/\r\n|\r|\n/', '<br>\n', $txt);
  return $txt;
}

function txt2html2($txt)
{
  $txt = str_replace ('\r\n', '\n', $txt);
  $txt = str_replace ('\r', '\n', $txt);
  $txt = str_replace ('\n', '<br>\n', $txt);
  return $txt;
}

$text = '<b>ADULTE:</b>
Aphonopelma seemani (Weibchen)

                    
<b>SPIDERLINGE:</b>
Avicularia geroldi
Brachypelma albopilosum
Brachypelma smithi
Grammostola rosea
Lasiodora klugi
Lasiodora parahybana
Psalmopoeus irminia


<b>SONSTIGES:</b>
Aufzuchtfaunaboxen f&uuml;r Spiderlinge

--------------------------------------------------------
Beschreibungen, Bilder und Preise unter 
<b>www.vs-planet.de</b> (Tiere abzugeben)
';

$Clock->Set('Title', __LINE__);

for ($i=0;$i<10;$i++) {
  $formatiert = txt2html ($text);
}

$Clock->Set('txt2html', __LINE__);

for ($i=0;$i<10;$i++) {
  $formatiert2 = txt2html2 ($text);
}

$Clock->Set('txt2html2', __LINE__);

$Clock->MaxLoad ("3", "new");
?>

> Also: Testen und dann Ergebnisse her.

Die Ergebnisse schwanken zwischen Faktor fünf und Faktor 30 zugunsten
str_replace.

> BTW:
> Ich wiederum wage mal zu behaupten, dass ein etwaiger Performace-Unterschied
> erst ab einer bestimmen Textlänge (einer SEHR großen Textmenge) überhaupt
> erst spürbar wird.

Und bei vielen Seitenaufrufen.

> Und wenn ich die Wahl habe zwischen einem 3-Zeiler, der vielleicht im
> Hinteren-Nachkomma-Tausendstel-Mili-Sekunden-Bereich schneller ist und einem
> Einzeiler, um ein Problem zu lösen, brauche ich wirklich nicht lange zu
> überlegen ...


Ich auch nicht. Könnte aber sein, dass meine Überlegungen zu einer
anderen Entscheidung führen. ;-)

Grüße,
Martin

php::bar PHP Wiki   -   Listenarchive