Hallo,
Kleiner Nachtrag, Faktor 10 ist auch noch Unterkante, probiere das mal mit einer Wortliste, einem grossen Array, und längeren Worten als "HALLO". Das potenziert sich ganz schön auf irgendeine Art und Weise.
Ich nehme zum Beispiel eine PLZ/ORT Liste im Test >3MB.
Ok, bei einem realistischen Text (zwar Englisch, aber immerhin 1.2 MiB) sind's bei mir ~320ms vs. ~5ms - also Faktor 64... Hmm, dann ist mb_strtolower() ineffizienter implementiert, als es theoretisch nötig wäre, ich würde erwarten, dass die Laufzeitklasse bei beiden Funktionen O(n) wäre - halt nur mit einem anderen Faktor und einer anderen additiven Konstante.
Andererseits: Wozu musst Du bei jedem Request megabyteweise Daten mit strtolower() bearbeiten? Das leuchtet mir irgendwie nicht so ganz ein...
Viele Grüße,
Christian