<div class="gmail_quote">2010/10/20 <a href="mailto:russoz@gmail.com">russoz@gmail.com</a> <span dir="ltr"><<a href="mailto:russoz@gmail.com">russoz@gmail.com</a>></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="'courier new', 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="'courier new', monospace"> Rate dispatch_hash switch dispatch_array lookup_hash lookup_array</font></div><div><font face="'courier new', monospace">dispatch_hash 1088180/s -- -5% -10% -52% -58%</font></div>
<div><font face="'courier new', monospace">switch 1147749/s 5% -- -6% -49% -56%</font></div><div><font face="'courier new', monospace">dispatch_array 1215036/s 12% 6% -- -46% -53%</font></div>
<div><font face="'courier new', monospace">lookup_hash 2265153/s 108% 97% 86% -- -13%</font></div><div><font face="'courier new', 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="'courier new', 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="'courier new', monospace"> Rate dispatch_hash dispatch_array switch lookup_hash lookup_array</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace">dispatch_hash 1187751/s -- -14% -24% -60% -66%</font></div><div><font class="Apple-style-span" face="'courier new', monospace">dispatch_array 1373179/s 16% -- -13% -54% -61%</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace">switch 1571820/s 32% 14% -- -47% -55%</font></div><div><font class="Apple-style-span" face="'courier new', monospace">lookup_hash 2953682/s 149% 115% 88% -- -16%</font></div>
<div><font class="Apple-style-span" face="'courier new', 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>