А что у вас за задача такая ?
Есть ооочень много конкатенаций подряд идет (в цикле например) - то нужно оптимизировать сам алгоритм склейки.
Если не нагружен - оставить более читаемый вариант =)

On 03/10/2015 07:59 PM, Andrey Kovbovich wrote:
Интересно, получается конкатенировать более чем в 2 раза быстрее последовательно (selfcat), а не разом ($z = $x . $y);

Warstone, я писал про использование сабстр с параметром replace (4ый). А ты почему-то используешь в примерах 3х-арный вариант.

2015-03-10 19:48 GMT+03:00 PEF Secure <[email protected] <mailto:[email protected]>>:

    On Tuesday, March 10, 2015 17:03:36 Andrey Kovbovich wrote:
    > Кто-нибудь знает, за счет чего substr быстрее?
    >
    > $ perl -MBenchmark=cmpthese
    >
    -wE'my$x="0"x1_000_000;my$b="1"x100_000;cmpthese(10000,{concat=>sub{my$z=$x.
    >
    $b;},substr=>sub{my$z="";substr$z,(length$z),(length$x),$x;substr$z,(length$
> z),(length$b),$b;},join=>sub{my$z=join("",$x,$b)}});' Rate join concat
    > substr
    > join   3922/s     --    -0%   -58%
    > concat 3937/s     0%     --   -57%
    > substr 9259/s   136%   135%     --

    selfcat => sub {my$z=$x; $z.=$b;}

    вот примерный аналог твоего substr

    --
    PEF Developer
    --
    Moscow.pm mailing list
    [email protected] <mailto:[email protected]> | http://moscow.pm.org





-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить