[Moscow.pm] Быстрая конкатенация строк

Dmitry Smal mialinx на gmail.com
Вт Мар 10 10:58:05 PDT 2015


Без копирования - никак, если вам нужно собрать в один буфер, а приходят 
из разных мест.
Если заранее известен размер (либо есть оценка) - то можно попробовать 
выделить заранее все необходимое место, но это XSкой.

On 03/10/2015 08:27 PM, Andrey Kovbovich wrote:
> Задача - приходят от I/O куски данных, и нужно их буферизировать перед 
> обработкой. Вопрос как это сделать эффективно (идеально - без 
> копирования).
>
> 10 марта 2015 г., 20:20 пользователь Dmitry Smal <mialinx на gmail.com 
> <mailto: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
>>     <mailto: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 <mailto:moscow-pm на pm.org> | http://moscow.pm.org
>>
>>
>>
>>
>
>
>     --
>     Moscow.pm mailing list
>     moscow-pm на pm.org <mailto:moscow-pm на pm.org> | http://moscow.pm.org
>
>
>
>

----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20150310/bacf418a/attachment.html>


Подробная информация о списке рассылки Moscow-pm