<div class="gmail_quote">2010/10/20 <a href="mailto:russoz@gmail.com">russoz@gmail.com</a> <span dir="ltr">&lt;<a href="mailto:russoz@gmail.com">russoz@gmail.com</a>&gt;</span><br><div>[...] </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="gmail_quote"><div></div><div>Os resultados são bem diferentes:</div><div><br></div><div><div><div><font face="&#39;courier new&#39;, monospace">19:14:32 BRST az@blueturtle:~/tmp/perldev $ ./<a href="http://test-case.pl" target="_blank">test-case.pl</a> </font></div>


<div><font face="&#39;courier new&#39;, monospace">                    Rate dispatch_hash switch dispatch_array lookup_hash lookup_array</font></div><div><font face="&#39;courier new&#39;, monospace">dispatch_hash  1088180/s            --    -5%           -10%        -52%         -58%</font></div>


<div><font face="&#39;courier new&#39;, monospace">switch         1147749/s            5%     --            -6%        -49%         -56%</font></div><div><font face="&#39;courier new&#39;, monospace">dispatch_array 1215036/s           12%     6%             --        -46%         -53%</font></div>


<div><font face="&#39;courier new&#39;, monospace">lookup_hash    2265153/s          108%    97%            86%          --         -13%</font></div><div><font face="&#39;courier new&#39;, monospace">lookup_array   2591771/s          138%   126%           113%         14%           --</font></div>


</div></div><div><br></div></div></blockquote><div><br></div><div>Aparentemente essa rodada acima foi ponto-fora-da-reta. Rodei o teste várias vezes aqui e um resultado é mais consistentemente parecido com:</div><div><br>

</div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">19:53:00 BRST az@blueturtle:~/tmp/perldev $ ./<a href="http://test-case.pl">test-case.pl</a> </font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">                    Rate dispatch_hash dispatch_array switch lookup_hash lookup_array</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">dispatch_hash  1187751/s            --           -14%   -24%        -60%         -66%</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">dispatch_array 1373179/s           16%             --   -13%        -54%         -61%</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">switch         1571820/s           32%            14%     --        -47%         -55%</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">lookup_hash    2953682/s          149%           115%    88%          --         -16%</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">lookup_array   3518808/s          196%           156%   124%         19%           --</font></div></div><div><br></div><div>Apesar do switch ganhar com mais folga dos dispatches, ainda assim acho que, quando olhamos para a legibilidade e extensibilidade do código, continuo em prol do dispatch. E, se há um requisito muito forte de performance nesse ponto, sugiro pular logo para uma lookup table, como também dito antes.</div>

</div><div><br></div>[]s,<br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com" target="_blank">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz" target="_blank">www.flickr.com/photos/alexeiz</a>]<br>

<span style="font-family:arial, sans-serif;font-size:12.5px;border-collapse:collapse"><div>«Only love / <span style="font-size:12.5px">Can bring the rain / </span><span style="font-size:12.5px">That makes you yearn to the sky»</span></div>

</span><br>