Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

$&のpodはきちんと読むべき

心に傷を負ったのでこれを記しておく。

The use of this variable anywhere in a program imposes a considerable performance penalty on all regular expression matches.

perlvar

perl5.18なら直ってるみたいな噂も小耳に挟んだけど変わらなそげ。手元のperl5.18.1の結果。

% time perl -e 'sub f { $_[0] =~ /foo/ } f("foo") for 1..10000000'
perl -e 'sub f { $_[0] =~ /foo/ } f("foo") for 1..10000000'  6.58s user 0.04s system 99% cpu 6.627 total
%  time perl -e 'warn $&; sub f { $_[0] =~ /foo/ } f("foo") for 1..10000000'
Warning: something's wrong at -e line 1.
perl -e 'warn $&; sub f { $_[0] =~ /foo/ } f("foo") for 1..10000000'  10.79s user 0.06s system 99% cpu 10.850 total

リャマ本には書いてた。

4/1追記: Plack::App::Proxyで使ってた。ごめんなさい。