[Moscow.pm] Быстрая конкатенация строк
Andrey Kovbovich
akovbovich на gmail.com
Вт Мар 10 10:27:36 PDT 2015
Задача - приходят от I/O куски данных, и нужно их буферизировать перед
обработкой. Вопрос как это сделать эффективно (идеально - без копирования).
10 марта 2015 г., 20:20 пользователь Dmitry Smal <mialinx на gmail.com>
написал:
> А что у вас за задача такая ?
> Есть ооочень много конкатенаций подряд идет (в цикле например) - то нужно
> оптимизировать сам алгоритм склейки.
> Если не нагружен - оставить более читаемый вариант =)
>
>
> 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 <pef-secure на yandex.ru>:
>
>> 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
>> moscow-pm на pm.org | http://moscow.pm.org
>>
>
>
>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20150310/d2ad5c86/attachment-0001.html>
Подробная информация о списке рассылки Moscow-pm