Carsten: Testen ob erster Buchstabe gross ist

Beitrag lesen

Hi Sven,

Das würde ich  nicht sagen. Harry schmeißt gleich die komplette reguläre Ausdrucksmaschine an. Die ist zwar sehr mächtig, kostet aber auch performance.

Hast du Benchmarks gemacht?
Wie groß ist der Unterschied denn?
Spielt das im vorgesehenen Anwendungsfall eine Rolle?

Wieso wird bei offensichtlichen Anfängerfragen immer wieder auf die vermeintliche Performanceunterschiede hingewiesen zu deren korrekter Bewertung ein vielfaches an Wissen nötig ist als der Fragesteller hat?

Dein Vorschlag hingegen operiert praktisch nur mit einem Byte. Welche Zeichen eine Entsprechung als großer Buchstabe haben, kann man in Tabellen ablegen, vielleicht auch als Bit-Operation herstellen - das ist sehr schnell realisiert.

Die Bit-Operationen versagen bei den diakritischen Zeichen - strtoupper bei korrekter Spracheinstellung und Installation nicht.
Eine Tabelle muss der Interpreter über einen Hash adressieren, ebenso zweimal das erste Zeichen des Strings.

Ich würde schätzen, das Rennen um eine Millionen Strings mit oder ohne großen ersten Buchstaben würdest du gewinnen, nicht Harry.

Du weisst das die regulären Ausdrücke kompiliert und gecachet werden?
Wenn also der reguläre Ausdruck in einem effizienten Sprachkonstrukt angewandt wird, kann er durchaus das Rennen machen.
Meine Versuche mit gut 1000 Strings (=Zeilen des Forums) ergaben z.B. keine signifikanten Unterschiede in der Laufzeit zwischen einer str_replace() und preg_replace() Lösung.

Eine sinnvolle Laufzeitoptimierung sollte also -nachdem(!) die Notwendigkeit einer solchen festgestellt wurde- beide Varianten gegeneinander benchmarken.
Meist wird man hinterher feststellen das soetwas 3% bringt, nachdem die Optimierung des Algorithmus 50% gebracht hat.

Gruss,
  Carsten