<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 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 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 href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>
                | <a 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 href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>