Tanktalus przedstawia wzorzec dla bardzo małych strun, ale problemy gorzej jak struny stają się coraz większe.W swoim kodzie, zmieniłem górną część:
my $a = 'a' x 1_000_000;
my @x = (
" $a ",
"$a ",
$a,
" $a"
);
mogę uzyskać te wyniki:
Rate single capture trick double
single 2.09/s -- -12% -98% -98%
capture 2.37/s 13% -- -98% -98%
trick 96.0/s 4491% 3948% -- -0%
double 96.4/s 4512% 3967% 0% --
jako łańcuch robi się coraz większy, używając „trick” i „podwójne” są prawie takie same, a powszechne rozwiązanie, do którego dąży większość ludzi, "singiel" (w tym ja, ponieważ nie mogę złamać tego nawyku, mimo że to wiem), naprawdę zaczyna ssać.
Ilekroć patrzysz na wskaźnik, pomyśl o tym, co mówi. Aby sprawdzić, czy je rozumiesz, zmień dane i spróbuj ponownie. Uczyń tablice długimi, skalarami dużymi i tak dalej. Utwórz pętle, greps lub wyrażenia regularne znajdź rzeczy na początku, środku i końcu. Sprawdź, czy nowe wyniki pasują do Twojej prognozy. Dowiedz się, jaki jest trend. Czy wydajność jest coraz lepsza, zbliża się do limitu, szczyt zaczyna spadać, czy coś innego?
"Wykończenie" to normalna nazwa usuwania białego trójkąta z obu stron napisu. możesz: $ title = ~ s/remove/trim/ – Kip
Usuwam znacznik "pcre", ponieważ jest to nazwa biblioteki regex C (tej, która obsługuje funkcje preg PHP), a to oczywiście nie jest to, jak jest używana tutaj. –