<div dir="ltr">Pessoas,<div><br></div><div>depois de fazer alguns testes utilizando o programa ab para medir o tempo de resposta médio de alguns endpoints,</div><div>e tambem de observar a CPU utilizada no final do 'forkprove' em alguns projetos, rodando no perl 5.20 e depois no 5.16, eu observei pouca, mas existente, perda de velocidade.</div>

<div>Fiquei com isso na cabeça, pois todo mundo dizendo que está mais rápido, e não consegui ver isso na pratica. então, fui fazer um teste separado, sem todo o ambiente do catalyst, pois como há muitos modulos, alguns do meu 5.16 poderiam estar desatualizados em relação ao 5.20.</div>

<div><br></div><div>pois bem,</div><div>fiz o seguinte script:</div><div><br></div><div><div><font face="courier new, monospace">use 5.14.2;</font></div><div><font face="courier new, monospace">use warnings;</font></div>
<div>
<font face="courier new, monospace">use Dumbbench;</font></div><div><font face="courier new, monospace">use Dumbbench::CPUFrequencyPinner;</font></div><div><font face="courier new, monospace">use Dumbbench::BoxPlot;</font></div>

<div><font face="courier new, monospace">require Dumbbench::BoxPlot;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">my $opt = '/home/renato/perl5/perlbrew/perls/perl-5.16.2/bin/perl';</font></div>

<div><font face="courier new, monospace">my $unopt = '/home/renato/perl5/perlbrew/perls/perl-5.20.0/bin/perl';</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">my $code = <<'HERE';</font></div>

<div><font face="courier new, monospace">my %a;</font></div><div><font face="courier new, monospace">$a{rand(2)}++ for 1..100000;</font></div><div><font face="courier new, monospace">foreach my $x (keys %a){</font></div>
<div>
<font face="courier new, monospace">    $a{$x} = $a{$x} * -1;</font></div><div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace">foreach my $x (reverse keys %a){</font></div><div>
<font face="courier new, monospace">    delete $a{$x};</font></div>
<div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace">HERE</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">my $db = Dumbbench->new(</font></div>

<div><font face="courier new, monospace">  target_rel_precision => 0.005,</font></div><div><font face="courier new, monospace">  initial_runs         => 20,</font></div><div><font face="courier new, monospace">);</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">$db->add_instances(</font></div><div><font face="courier new, monospace">  Dumbbench::Instance::Cmd->new(command => [$unopt, '-e', $code],</font></div>

<div><font face="courier new, monospace">                                name => "5.20"),</font></div><div><font face="courier new, monospace">  Dumbbench::Instance::Cmd->new(command => [$opt, '-e', $code],</font></div>

<div><font face="courier new, monospace">                                name => "5.16"),</font></div><div><font face="courier new, monospace">);</font></div><div><font face="courier new, monospace"><br></font></div>

<div><font face="courier new, monospace">SCOPE: {</font></div><div><font face="courier new, monospace">  # Pin CPU frequency down to reduce variability</font></div><div><font face="courier new, monospace">  my $p = Dumbbench::CPUFrequencyPinner->new;</font></div>

<div><font face="courier new, monospace">  $SIG{INT} = sub {undef $p; exit;};</font></div><div><font face="courier new, monospace">  $p->set_max_frequencies($p->min_frequencies->[0]);</font></div><div><font face="courier new, monospace">  $db->run;</font></div>

<div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">$db->report;</font></div><div><font face="courier new, monospace">use DDP; p $db;</font></div>

<div><font face="courier new, monospace">$db->box_plot->show();</font></div></div><div><br></div><div>Estou anexado o resultado em grafico,</div><div>se quiserem que eu rode mais testes, com outros codigos dentro do HERE vocês me avisem, pois o libROOT é ~meio~ demorado pra compilar.</div>

<div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-28 21:24 GMT-03:00 Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>perl-5.20.0 is successfully installed.</div><div><br></div><div><br></div><div>hora de fazer o </div>

<div><pre style="font-size:14px;font-family:Courier;margin:10px 10px 25px 20px;padding-left:25px;color:rgb(0,0,0);background-color:rgb(221,221,221);overflow:auto">   perl -MCPAN -e autobundle
</pre></div><div>e verificar os ganhos de performance em apps reais!</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-28 15:19 GMT-03:00 Daniel de Oliveira Mantovani <span dir="ltr"><<a href="mailto:daniel.oliveira.mantovani@gmail.com" target="_blank">daniel.oliveira.mantovani@gmail.com</a>></span>:<div>

<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">garu++<br>
<br>
Eu ainda não me conformo com a ida da Diana, parece que foi ontem que<br>
nós enchemos a cara no Rio!<br>
<br>
2014-05-28 14:27 GMT-03:00 Thiago Rondon <<a href="mailto:thiago@aware.com.br" target="_blank">thiago@aware.com.br</a>>:<br>
<div><div>> Garu++<br>
><br>
> Você deveria jogar este teu e-mail como artigo em portais de<br>
> desenvolvedores e tecnologia.<br>
><br>
> Isto é excelente para mostrar como a linguagem vem se desenvolvendo!<br>
><br>
> Alias, seus e-mails, são artigos. ;-)<br>
><br>
> Abs,<br>
> -Thiago Rondon<br>
><br>
><br>
> 2014-05-28 2:00 GMT-03:00 breno <<a href="mailto:breno@rio.pm.org" target="_blank">breno@rio.pm.org</a>>:<br>
>> Oi pessoal,<br>
>><br>
>> é realmente uma ótima época para o Perl 5. A comunidade internacional<br>
>> continua cada vez mais ativa e a versão 20 que acabou de ser lançada é<br>
>> talvez uma das mais interessantes dos últimos tempos! Vejam algumas<br>
>> das novidades dessa versão:<br>
>><br>
>><br>
>> Assinaturas de subrotinas<br>
>> -----------------------------------<br>
>><br>
>> Até então, para pegar os argumentos passados a uma função ou método em<br>
>> Perl, precisávamos manipular diretamente o @_, em código como:<br>
>><br>
>> sub pessoa {<br>
>>      my ($nome, $idade) = @_;<br>
>>      print "oi $nome, vc tem $idade anos";<br>
>> }<br>
>><br>
>> Agora podemos escrever:<br>
>><br>
>> use feature 'signatures';<br>
>><br>
>> sub pessoa ($nome, $idade) {<br>
>>     print "oi $nome, vc tem $idade anos";<br>
>> }<br>
>><br>
>> podemos também garantir que nossa sub não terá argumentos:<br>
>><br>
>> sub pessoa () {<br>
>>     ...<br>
>> }<br>
>><br>
>> mais informações sobre essa tão esperada feature em:<br>
>> <a href="https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perlsub.pod#Signatures" target="_blank">https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perlsub.pod#Signatures</a><br>
>><br>
>><br>
>><br>
>> Desreferenciamento pós-fixado<br>
>> ------------------------------------------<br>
>><br>
>> Até então, para desreferenciar uma variável em Perl precisávamos<br>
>> envolvê-la em chaves, por exemplo:<br>
>><br>
>> @lista = @{ $ref->{nomes}[3][-1]{lista} };<br>
>><br>
>> A versão 20 do Perl 5 agora oferece outra sintaxe, mais clara (porque<br>
>> não envolve as chaves extras) e intuitiva (pq segue a lógica de ação<br>
>> do resto do código, da esquerda para a direita). Nessa sintaxe, o<br>
>> mesmo código acima pode ser reescrito como:<br>
>><br>
>> use experimental 'postderef';<br>
>><br>
>> @lista = $ref->{nomes}[3][-1]{lista}->@*;<br>
>><br>
>> Ou seja, basta acessar a referência desejada e adicionar uma última<br>
>> seta, indicando no símbolo o tipo que você vai desreferenciar, seguido<br>
>> de um asterisco. Podemos desreferenciar dessa forma arrays, hashes,<br>
>> escalares, subs e até mesmo globs!<br>
>><br>
>> Mais detalhes em<br>
>> <a href="https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perldelta.pod#Experimental-Postfix-Dereferencing" target="_blank">https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perldelta.pod#Experimental-Postfix-Dereferencing</a><br>



>><br>
>><br>
>><br>
>> Hash Slices<br>
>> ----------------<br>
>><br>
>> Ao manipularmos arrays, é muito comum pegar grupos de valores através de slices:<br>
>><br>
>> @herculoides = qw( igoo tundro gloop zok gleep );<br>
>> @irmaos = @herculoides[2,4];<br>
>><br>
>> Também conseguiamos fazer slices de hashes, mas só retornando valores em listas:<br>
>><br>
>> my %dados = (<br>
>>     nome => 'Thaddeus "Tad" Ghostal',<br>
>>     apelido => 'Space Ghost',<br>
>>     profissao => 'Apresentador',<br>
>> );<br>
>><br>
>> my ($nome, $apelido) = @dados{ 'nome', 'apelido' };<br>
>><br>
>> Agora, no 5.20, podemos fazer hash slices completos, convertendo<br>
>> hashes grandes em sub-hashes! O hash slice funciona como o array<br>
>> slice:<br>
>><br>
>> my %resumido = %dados{ 'nome', 'apelido' };<br>
>><br>
>> say $resumido->{apelido};  # 'Space Ghost'<br>
>><br>
>><br>
>><br>
>> Outras melhorias<br>
>> -----------------------<br>
>><br>
>> * Melhor desempenho - o 5.20 está ainda mais rápido que os anteriores,<br>
>> com melhorias de desempenho em expressões regulares, cópia de strings,<br>
>> acesso a chaves de hash e muito mais!<br>
>><br>
>> * Protótipos até então eram definidos como, por exemplo: sub lala<br>
>> ($$). Agora podem ser escritos como atributos da sub, ou seja: sub<br>
>> lala :prototype($$). A forma antiga ainda é permitida.<br>
>><br>
>> * Melhor qualidade na geração de números aleatórios, através de um<br>
>> gerador independente de plataforma.<br>
>><br>
>> * Suporte a Unicode 6.3 (versão anterior suportava o 6.2).<br>
>><br>
>> * Android adicionado como plataforma suportada - sim, o 5.20 compila<br>
>> para Android! Instruções em:<br>
>> <a href="https://github.com/Perl/perl5/blob/blead/README.android" target="_blank">https://github.com/Perl/perl5/blob/blead/README.android</a><br>
>> A compilação em ambientes Windows também ficou mais rápida e portátil.<br>
>><br>
>> * E muito mais!<br>
>><br>
>> * CGI e Module::Build (e seus módulos associados) são alguns dos<br>
>> módulos que estão deixando o core para torná-lo mais leve e moderno,<br>
>> mas ainda estão disponíveis no seu mirror favorito do CPAN.<br>
>><br>
>><br>
>> Obituário<br>
>> -------------<br>
>><br>
>> A versão 20 do Perl 5 contém também uma homenagem a nossa querida<br>
>> Diana Rosa, falecida em maio com apenas 27 anos. Sempre muito feliz e<br>
>> participante ativa da comunidade de Perl Mongers do Rio de Janeiro,<br>
>> sua memória agora está gravada para sempre em uma das versões mais<br>
>> importantes da linguagem que ela tanto gostava. A mensagem está no<br>
>> perldelta e pode ser vista em:<br>
>> <a href="https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perldelta.pod#Obituary" target="_blank">https://metacpan.org/pod/release/RJBS/perl-5.20.0/pod/perldelta.pod#Obituary</a><br>
>><br>
>><br>
>> Instalando<br>
>> --------------<br>
>><br>
>> Pra quem usa perlbrew: perlbrew install perl-5.20.0<br>
>><br>
>> Pra quem usa plenv: plenv install perl-5.20.0<br>
>><br>
>> Difícil, não? :)<br>
>><br>
>><br>
>> Estatísticas e Agradecimentos:<br>
>> ------------------------------------------<br>
>><br>
>> As seguintes pessoas foram algumas das responsáveis pelo que se tornou<br>
>> o perl 5.20.0 (embora essa lista esteja certamente incompleta): Aaron<br>
>> Crane, Abhijit Menon-Sen, Abigail, Abir Viqar, Alan Haggai Alavi, Alan<br>
>> Hourihane, Alexander Voronov, Alexandr Ciornii, Andy Dougherty, Anno<br>
>> Siegel, Aristotle Pagaltzis, Arthur Axel 'fREW' Schmidt, Brad Gilbert,<br>
>> Brendan Byrd, Brian Childs, Brian Fraser, Brian Gottreu, Chris<br>
>> 'BinGOs' Williams, Christian Millour, Colin Kuskie, Craig A. Berry,<br>
>> Dabrien 'Dabe' Murphy, Dagfinn Ilmari Mannsåker, Daniel Dragan, Darin<br>
>> McBride, David Golden, David Leadbeater, David Mitchell, David Nicol,<br>
>> David Steinbrunner, Dennis Kaarsemaker, Dominic Hargreaves, Ed Avis,<br>
>> Eric Brine, Evan Zacks, Father Chrysostomos, Florian Ragwitz, François<br>
>> Perrad, Gavin Shelley, Gideon Israel Dsouza, Gisle Aas, Graham Knop,<br>
>> H.Merijn Brand, Hauke D, Heiko Eissfeldt, Hiroo Hayashi, Hojung Youn,<br>
>> James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Jess Robinson,<br>
>> Jesse Luehrs, Johan Vromans, John Gardiner Myers, John Goodyear, John<br>
>> P. Linderman, John Peacock, kafka, Kang-min Liu, Karen Etheridge, Karl<br>
>> Williamson, Keedi Kim, Kent Fredric, kevin dawson, Kevin Falcone,<br>
>> Kevin Ryde, Leon Timmermans, Lukas Mai, Marc Simpson, Marcel Grünauer,<br>
>> Marco Peereboom, Marcus Holland-Moritz, Mark Jason Dominus, Martin<br>
>> McGrath, Matthew Horsfall, Max Maischein, Mike Doherty, Moritz Lenz,<br>
>> Nathan Glenn, Nathan Trapuzzano, Neil Bowers, Neil Williams, Nicholas<br>
>> Clark, Niels Thykier, Niko Tyni, Olivier Mengué, Owain G. Ainsworth,<br>
>> Paul Green, Paul Johnson, Peter John Acklam, Peter Martini, Peter<br>
>> Rabbitson, Petr Písař, Philip Boulain, Philip Guenther, Piotr<br>
>> Roszatycki, Rafael Garcia-Suarez, Reini Urban, Reuben Thomas, Ricardo<br>
>> Signes, Ruslan Zakirov, Sergey Alekseev, Shirakata Kentaro, Shlomi<br>
>> Fish, Slaven Rezic, Smylers, Steffen Müller, Steve Hay, Sullivan Beck,<br>
>> Thomas Sibley, Tobias Leich, Toby Inkster, Tokuhiro Matsuno, Tom<br>
>> Christiansen, Tom Hukins, Tony Cook, Victor Efimov, Viktor Turskyi,<br>
>> Vladimir Timofeev, YAMASHINA Hio, Yves Orton, Zefram, Zsbán Ambrus,<br>
>> Ævar Arnfjörð Bjarmason.<br>
>><br>
>> Perl 5.20.0 representa aproximadamente 12 meses de desenvolvimento<br>
>> desde o 5.18.0 e contém aproximadamente 470.000 linhas modificadas por<br>
>> 2.900 arquivos, feitas por 124 autores diferentes. A linguagem Perl<br>
>> continua florescendo em sua terceira década graças a sua vibrante<br>
>> comunidade de desenvolvedores e usuários - e isso inclui você!<br>
>> Obrigado por usar Perl :)<br>
>><br>
>> Divirtam-se!<br>
>><br>
>><br>
>> []s<br>
>><br>
>> -b<br>
>> _______________________________________________<br>
>> Brasil-PM mailing list<br>
>> <a href="mailto:Brasil-PM@pm.org" target="_blank">Brasil-PM@pm.org</a><br>
>> <a href="http://mail.pm.org/mailman/listinfo/brasil-pm" target="_blank">http://mail.pm.org/mailman/listinfo/brasil-pm</a><br>
> _______________________________________________<br>
> Brasil-PM mailing list<br>
> <a href="mailto:Brasil-PM@pm.org" target="_blank">Brasil-PM@pm.org</a><br>
> <a href="http://mail.pm.org/mailman/listinfo/brasil-pm" target="_blank">http://mail.pm.org/mailman/listinfo/brasil-pm</a><br>
<br>
<br>
<br>
</div></div><span><font color="#888888">--<br>
<br>
-dom<br>
<br>
--<br>
<br>
Daniel de Oliveira Mantovani<br>
Business Analytic Specialist<br>
Perl Evangelist /Astrophysics hobbyist.<br>
+55 11 9 8538-9897<br>
XOXO<br>
</font></span><div><div>_______________________________________________<br>
Brasil-PM mailing list<br>
<a href="mailto:Brasil-PM@pm.org" target="_blank">Brasil-PM@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/brasil-pm" target="_blank">http://mail.pm.org/mailman/listinfo/brasil-pm</a></div></div></blockquote></div></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all">

<div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div>
<div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div><div><div style="text-align:right"><font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div>


</div><div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div><div>

<div style="text-align:right"><font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>


</div>