Hi!
Das Übliche also. Bei Gebrauch in "handelsüblichen" Mengen ist es nichts als Mikrooptimierung ohne praktische Auswirkung.
Was hast Du denn jetzt erwartet?
Ich selbst habe nichts anderes erwartet. Um nicht als argumentativer Verlierer dazustehen - so scheint es mir meist - kommt in solchen Situationen recht schnell und pauschal das Performance-Argument, ohne zu wissen, ob im konkreten Anwendungsfall der Gewinn einen Nutzen bringt. Denn oft ist es so wie beim Sportler, der seine eigene Bestleistung um zwei Zehntelsekunden unterboten hat. Er hat nun mehr Freizeit, aber was nutzt es letztlich?
Wenn die Ausfuehrung von substr() ca. 0,2 Mikrosekunden dauert, koennte die andere Variante auch um den Faktor 5 Millionen schneller sein, ohne dass es zu merklichen Unterschieden kommt, wenn es wenige Iterationen sind.
Genau, keiner merkt etwas davon. Aber der Programmierer hatte damit Arbeit. Wenn dann auch noch der entstandene Code schwerer als üblich oder notwendig verständlich ist, ...
Am Ende muss bei einer Optimierung eine signifikante Entlastung des gesamten Servers rauskommen, so dass er mehr Reserven für den Bedarfsfall (Stoßzeit) zur Verfügung hat. Wenn ein Hafen einen Liter Wasser mehr aufnehmen kann, reicht das selten für eine Sturmflut. Ebenso muss der Optimierungsaufwand gegengerechnet werden zu anderen Lösungen, wie Lastverteilung auf einen zweiten Server.
Und ich weiss nicht, was Du unter "handelsueblich" verstehst, aber m.E. kann es ganz schnell in Bereiche kommen, in denen es eine praktische Auswirkung hat - schon bei 1000 halte ich den Unterschied - 2 Zehntel gegen 2 Hundertstel - fuer signifikant.
"Haushaltsüblich" wäre wohl das passendere Wort gewesen. Damit meinte ich eine bis wenige Anwendungen pro Script. Bei Stringverarbeitung ist selten das Ergebnis irrelevant, so dass mit mehr Anwendungen auch mehr Daten entstehen, die beispielsweise weitertransportiert werden müssen. Die meiste Zeit geht prozentual bei diesen Vorgängen drauf, so dass das Optimieren beim Erzeugen/Berechnen das Kraut nicht fett macht.
Anders ist die Sachlage bei mathematischen Problemen wo viele Rechenschritte notwendig sind, um zu einem relativ kleinen Ergebnis zu kommen (Hashwert oder Apfelmännchen berechnen, um nur mal zwei zu nennen). So etwas in PHP lösen zu wollen, gehört mit langer Laufzeit bestraft.
Uebrigens: Die substr()-Loesung sieht ohne Zweifel huebscher aus. Aber ich z.B. haette vorher nicht auswendig gewusst, dass mir substr($string, -1) das letzte Zeichen liefert, waehrend die Array-Schreibweise selbsterklaerend ist. Daher koennte ich nicht behaupten, dass die substr()-Variante fuer Noobs wie mich lesbarer ist.
Ja, aber auch das Abziehen von 1 von der Stringlänge ist für einen, der das zum ersten Mal sieht, nicht unbedingt selbsterklärend.
So oder so lohnt es sich, die Alternativen zu kennen.
Das allerdings.
Lo!