Bei sowas auf die Performance achten? Also bitte ... ;-)
Teiele im String ersetzen
Einklappen
X
-
Original geschrieben von PHP-Desaster
Bei sowas die drei Zeichen kürzere Version bevorzugen? Also bitte :-P
Performance ist etwas sehr überbewertet für die meisten Anwendungsbeispiele von PHP. Wenn Geschwindigkeit vor Übersichtlichkeit und Wiederverwertbarkeit gehen würde, müsste man ja OOP in die Tonne werfen.
Bei gewöhnlichen Websites lässt sich durch Optimierung am Frontend (!) vermutlich viel mehr Performance rauskitzeln.
Kommentar
-
Original geschrieben von php_fussel
1 Zeichen reduzieren = spart 4 Zeichen!Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Kommentar
-
Mensch Leute, ich will doch nur etwas 'Schbass' haben ... immer diese knochentrockenen Coder! Aber auf jeden Fall bin ich stets für Verbesserungen dankbar, bitte lasst das nicht aufhören!
@ModestLife: Das mit dem '-1' (also den String von hinten anzählen), ist in der Funktionsdefinition klar dokumentiert ... da hast Du etwas weitergelesen ... meinen Glückwunsch zum (vorerst) 1. Platz! Aber vielleicht findet ja der eine oder andere eine noch kürzere Lösung ...!
"Ist der Wert negativ, gibt er die Zeichenzahl an, um die ab Ende von string rückwärts gezählt wird".
Gruß php_fussel
Kommentar
-
Original geschrieben von phpguru42
PHP-Code:echo str_pad($var[0], strlen($var) - 1, '*').substr($var, -1);
PHP-Code:echo preg_replace('/(?<=.).(?=.)/s', '*', $var);
Code:// $var mit 100 Zeichen/Bytes: $var = str_repeat("testtesttesttesttest", 5); -- performed 1000 runs == 10 loops * 100 runs_per_loop 1 run runs/s (1000 runs) -- 0.174 ms 5758/s (all: 173.669 ms) -- fw: preg_replace('/(?<!\A).(?!\z)/s', '*', $var); 0.179 ms 5585/s (all: 179.031 ms) -- fw: preg_replace('/(?<=.).(?=.)/s', '*', $var); 0.003 ms 330026/s (all: 3.030 ms) -- fw: $x = str_repeat('*', $len = strlen($var)); $x[0] = $var[0]; $x[--$len] = $var[$len]; 0.007 ms 148371/s (all: 6.740 ms) -- phpguru42: str_pad($var[0], strlen($var) - 1, '*').substr($var, -1); 0.003 ms 304774/s (all: 3.281 ms) -- ModestLife: substr_replace($var, str_repeat('*', strlen($var) - 2), 1, -1); 0.003 ms 306937/s (all: 3.258 ms) -- php_fussel: substr_replace($var,str_repeat("*",$erg=strlen($var)-2),1,$erg); 0.010 ms 103734/s (all: 9.640 ms) -- wahsaga: $var[0].str_repeat('*', strlen($var)-2).$var[strlen($var)-1]; --
Original geschrieben von RamonaS
Wie macht man sowas um zu sehen welche funktion schneller als die andere läuft?
Ich denke mal das wird wohl per schleife gemacht, aber um da gescheite ergebnisse zu erhalten muß man diesen durchgang 100. oder 1000. Male ausführen?
Gibts so ein fertiges script wo man seine 2 konkurenten einfügt und dann läßt sich testen welche schneller ist?
Man kann sich sowas aber per microtime() ganz prima selber basteln.
Kommentar
-
Original geschrieben von fireweasel
Meiner ist kürzer:
PHP-Code:echo preg_replace('/(?<=.).(?=.)/s', '*', $var);
Stehen diese Ausdrücke dafür?
(?<=.)
(?=.)
Kommentar
-
Aha, endlich mal Fakten auf´n Tisch! Da liege ich ja in Bezug auf die Performance an vorderster Front! Und mir wird hier in einem anderen Thread sinnloses Posten vorgeworfen, tse!
Das preg_replace (mit dem ich mal ausgiebig gearbeitet habe), hatte ich gestern bei einer erneuten (kürzeren) Lösungssuche auch schon im Visier ... kam dann aber auch nicht drauf! Gut!!
Gruß php_fussel
Kommentar
-
Original geschrieben von phpguru42
Wusste ich es doch, dass es mit preg_replace kürzer geht.
Habe soetwas wie alle Zeichen außer Anfang und Ende gesucht.
Code:echo preg_replace('/(?<!\A).(?!\z)/s', '*', $var);
Stehen diese Ausdrücke dafür?
(?<=.)
(?=.) [/B]
Kommentar
Kommentar