[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