[Cascavel-pm] Res: Perl

Nilson Santos Figueiredo Junior acid06 em gmail.com
Segunda Novembro 27 12:00:25 PST 2006


On 11/27/06, Breno G. de Oliveira <breno em clavis.com.br> wrote:
> por outro lado, o valor piora bastante quando a declaração da variável
> vai pra dentro da sub ("open my $fh, ...")

Meus resultados foram bem diferentes dos seus:

              Rate  local var       GLOB global var
local var  21918/s         --       -12%       -13%
GLOB       24950/s        14%         --        -0%
global var 25050/s        14%         0%         --

(WinXP SP2, AS Perl 5.8.8, Athlon 64 3500+)

Usar a variável local (my $fh) é ~13% mais lento.

Realizei o teste em outra máquina também:

              Rate  local var global var       GLOB
local var   8403/s         --       -43%       -45%
global var 14815/s        76%         --        -2%
GLOB       15152/s        80%         2%         --

(Ubuntu 5.10, Perl 5.8.7, PowerPC 350MHz)

Nesse caso, os resultados refletiram os obtidos por você mais ou menos.
Por acaso você testou utilizando perl 5.8.7?

Só pra complementar, testei em um servidor:

               Rate  local var       GLOB global var
local var  162602/s         --       -32%       -33%
GLOB       237530/s        46%         --        -2%
global var 242718/s        49%         2%         --

(SuSE 9.x, Perl 5.8.3, algo poderoso)

Não consegui determinar se é algo da 5.8.8 ou se é algo da versão pra
Windows. Alguém poderia testar num Linux com Perl 5.8.8, só pra matar
a curiosidade. No entanto, isso é completamente irrelevante uma vez
que você não fica abrindo mais de 15 mil arquivos por segundo, além de
ser um overhead esperado, já que a cada iteração a variável é alocada
e desalocada enquanto nos outros dois casos são variáveis globais.

Uma outra possibilidade é que a abertura de um arquivo no Linux é uma
operação mais lightweight que no Windows, por isso, o overhead da
variável local parece menor no Windows.

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm