[Moscow.pm] Быстрая конкатенация строк
Andrey Kovbovich
akovbovich на gmail.com
Вт Мар 10 07:21:14 PDT 2015
Отвечая на свой же вопрос - потому что join и concat предварительно делают
что-то наподобие my$z=" "x((length$x)+(length$y)); Т.к. такое выражение
выравнивает substr к показателям join и concat. Кстати, еще вопрос, где у
Перла функция конкатенации (та, что символ-точка)? В CORE::* не нашел. Мне
нужен кодереф от нее.
2015-03-10 17:03 GMT+03:00 Andrey Kovbovich <akovbovich на gmail.com>:
> Кто-нибудь знает, за счет чего 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% --
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20150310/97a2796f/attachment.html>
Подробная информация о списке рассылки Moscow-pm