| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

08-03-2009, 16:07
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Zitat:
|
Bei sowas auf die Performance achten? Also bitte ... ;-)
|
Bei sowas die drei Zeichen kürzere Version bevorzugen? Also bitte :-P
|

08-03-2009, 16:45
|
|
php_fussel
Newbie
|
|
Registriert seit: Jan 2009
Beiträge: 120
|
|
Öhm ... diesbezüglich wollte ich nur sagen, dass ich meine Version auch noch abspecken könnte ... den Variablenname auf 1 Zeichen reduzieren = spart 4 Zeichen! Bin ich dann wieder im Rennen  ???!
Gruß php_fussel
|

08-03-2009, 16:59
|
|
ModestLife
Registrierter Benutzer
|
|
Registriert seit: Sep 2007
Beiträge: 105
|
|
Zitat:
Original geschrieben von PHP-Desaster
Bei sowas die drei Zeichen kürzere Version bevorzugen? Also bitte :-P
|
Da geht's um Übersichtlichkeit. Ich brauche nicht 4 Zeichen, sondern 1 Variable weniger ... ;-)
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.
|

08-03-2009, 17:23
|
|
ArSeN
Registrierter Benutzer
|
|
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
|
|
Zitat:
Original geschrieben von php_fussel
1 Zeichen reduzieren = spart 4 Zeichen!
|
Vielleicht auf der HDD auf dem WebServer, aber bei der Ausführung wird das (könnte ich wette), wegoptimiert. Ich glaub aber hier wird gerade etwas enorm vom Thema abgewichen.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
|

08-03-2009, 20:09
|
|
php_fussel
Newbie
|
|
Registriert seit: Jan 2009
Beiträge: 120
|
|
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
|

08-03-2009, 21:56
|
|
phpguru42
Newbie
|
|
Registriert seit: Oct 2008
Beiträge: 71
|
|
PHP-Code:
echo str_pad($var[0], strlen($var) - 1, '*').substr($var, -1);
Juhu, ich habe den Kürzesten
|

08-03-2009, 22:07
|
|
php_fussel
Newbie
|
|
Registriert seit: Jan 2009
Beiträge: 120
|
|
|

09-03-2009, 16:39
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Original geschrieben von phpguru42
PHP-Code:
echo str_pad($var[0], strlen($var) - 1, '*').substr($var, -1);
Juhu, ich habe den Kürzesten
|
Meiner ist kürzer:
PHP-Code:
echo preg_replace('/(?<=.).(?=.)/s', '*', $var);
... und laaaangsamer, siehe:
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];
--
--
Zitat:
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?
|
Ja.
Zitat:
|
Gibts so ein fertiges script wo man seine 2 konkurenten einfügt und dann läßt sich testen welche schneller ist?
|
Sicher gibt es das.
Man kann sich sowas aber per microtime() ganz prima selber basteln.
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|

09-03-2009, 19:01
|
|
phpguru42
Newbie
|
|
Registriert seit: Oct 2008
Beiträge: 71
|
|
Zitat:
Original geschrieben von fireweasel
Meiner ist kürzer:
PHP-Code:
echo preg_replace('/(?<=.).(?=.)/s', '*', $var);
|
Wusste ich es doch, dass es mit preg_replace kürzer geht. Habe soetwas wie alle Zeichen außer Anfang und Ende gesucht.
Stehen diese Ausdrücke dafür?
(?<=.)
(?=.)
|

09-03-2009, 19:07
|
|
php_fussel
Newbie
|
|
Registriert seit: Jan 2009
Beiträge: 120
|
|
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
|

09-03-2009, 19:11
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Original geschrieben von phpguru42
Wusste ich es doch, dass es mit preg_replace kürzer geht.
|
Ja gehen tuts, aber nur sehr langsam (siehe Geschwindigkeitsvergleich). Wahrscheinlich liegts daran, dass für jedes Zeichen immer das davorliegende und das darauffolgende Zeichen extra geprüft wird. Ich hätte das gerne schneller.
Zitat:
|
Habe soetwas wie alle Zeichen außer Anfang und Ende gesucht.
|
Ja, das war der:
Code:
echo preg_replace('/(?<!\A).(?!\z)/s', '*', $var);
Ein beliebiges Zeichen, das aber nicht am Anfang und auch nicht am Ende des Strings steht.
Zitat:
Stehen diese Ausdrücke dafür?
(?<=.)
(?=.) [/B]
|
Nein, die stehen für "ein beliebiges Zeichen davor" und "ein beliebiges Zeichen danach".
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|