perlreみると
--
プログラム中にひとつでも$&, $`, $'があると
全てのパターンマッチでそれらを提供しないといけなくなるから
大幅に遅くなるかもしれません。
--
って感じですかね?

どの正規表現での$&, $`, $'を取りたいのか実行してみるまでわからないから
全正規表現で提供する必要がでてきちゃうんですね。
localとかmyで範囲の指定できて最適化されればいいのにね。