<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Без копирования - никак, если вам нужно
собрать в один буфер, а приходят из разных мест.<br>
Если заранее известен размер (либо есть оценка) - то можно
попробовать выделить заранее все необходимое место, но это XSкой.<br>
<br>
On 03/10/2015 08:27 PM, Andrey Kovbovich wrote:<br>
</div>
<blockquote
cite="mid:CAPTWO-bkR4sQ3SO6EBGYPMUTLbjfUemoME+QLYo3cZN+etkxYg@mail.gmail.com"
type="cite">
<div dir="ltr">Задача - приходят от I/O куски данных, и нужно их
буферизировать перед обработкой. Вопрос как это сделать
эффективно (идеально - без копирования).</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">10 марта 2015 г., 20:20 пользователь
Dmitry Smal <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:mialinx@gmail.com" target="_blank">mialinx@gmail.com</a>></span>
написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>А что у вас за задача такая ?<br>
Есть ооочень много конкатенаций подряд идет (в цикле
например) - то нужно оптимизировать сам алгоритм
склейки.<br>
Если не нагружен - оставить более читаемый вариант =)
<div>
<div class="h5"><br>
<br>
On 03/10/2015 07:59 PM, Andrey Kovbovich wrote:<br>
</div>
</div>
</div>
<div>
<div class="h5">
<blockquote type="cite">
<div dir="ltr">Интересно, получается конкатенировать
более чем в 2 раза быстрее последовательно
(selfcat), а не разом ($z = $x . $y);
<div><br>
</div>
<div>Warstone, я писал про использование сабстр с
параметром replace (4ый). А ты почему-то
используешь в примерах 3х-арный вариант.</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2015-03-10 19:48
GMT+03:00 PEF Secure <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:pef-secure@yandex.ru"
target="_blank">pef-secure@yandex.ru</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div>
<div>On Tuesday, March 10, 2015 17:03:36
Andrey Kovbovich wrote:<br>
> Кто-нибудь знает, за счет чего substr
быстрее?<br>
><br>
> $ perl -MBenchmark=cmpthese<br>
>
-wE'my$x="0"x1_000_000;my$b="1"x100_000;cmpthese(10000,{concat=>sub{my$z=$x.<br>
>
$b;},substr=>sub{my$z="";substr$z,(length$z),(length$x),$x;substr$z,(length$<br>
>
z),(length$b),$b;},join=>sub{my$z=join("",$x,$b)}});'
Rate join concat<br>
> substr<br>
> join 3922/s -- -0% -58%<br>
> concat 3937/s 0% -- -57%<br>
> substr 9259/s 136% 135% --<br>
<br>
</div>
</div>
selfcat => sub {my$z=$x; $z.=$b;}<br>
<br>
вот примерный аналог твоего substr<br>
<span><font color="#888888"><br>
--<br>
PEF Developer<br>
</font></span>
<div>
<div>--<br>
Moscow.pm mailing list<br>
<a moz-do-not-send="true"
href="mailto:moscow-pm@pm.org"
target="_blank">moscow-pm@pm.org</a> | <a
moz-do-not-send="true"
href="http://moscow.pm.org"
target="_blank">http://moscow.pm.org</a><br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
</blockquote>
<br>
</div>
</div>
</div>
<br>
--<br>
Moscow.pm mailing list<br>
<a moz-do-not-send="true" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a>
| <a moz-do-not-send="true" href="http://moscow.pm.org"
target="_blank">http://moscow.pm.org</a><br>
<br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
</blockquote>
<br>
</body>
</html>