[Rio-pm] tamanho do nome da variavel

Eden Cardim edencardim em gmail.com
Terça Abril 19 21:03:34 PDT 2011


>>>>> "Diogo" == Diogo Leal <estranho em diogoleal.com> writes:

    Diogo> Oi pessoal,
    Diogo> Eu e o Ronald estamos neste momento resolvendo um dos problemas[1] que tem no codechef[2] em Perl e
    Diogo> tivemos uma dúvida referente ao tamanho da string.

    Diogo> Se eu definir

    Diogo> $a = 1;

    Diogo> ao invés de

    Diogo> $
    Diogo> variavelgrandepracarambagrandegrandemesmo = 1;

    Diogo> Isso influencia na performance ao executar o script?

Em qualquer linguagem, ter mais bytes para se ler do disco e compilar
resulta em mais blocking de I/O e mais processamento para se executar a
compilação.

A diferença é que como programas em perl não são tipicamente
pré-compilados, você acaba sentindo sim o impacto do tamanho dos nomes
de variáveis (e do tamanho do script em geral) ao executar o script
várias vezes. Porém, uma vez compilada, a atribuição ao longo da
execução vai ter o mesmo tempo de processamento independentemente do
tamanho do nome da variável, porque nessa altura da execução, os
símbolos já foram todos trocados por endereços de memória.  (só não
tenho certeza se isso acontece com variáveis de pacote, que são hashes
disfarçados). Esse é um dos motivos pelo qual executar rodar um fork()
invés de re-executar o problema é melhor, não tem recompilação.

    Diogo> Eu ouvi dizer que o interpretador de Perl troca o nome da variável por um hash para economizar tempo,
    Diogo> isso é verdadeiro?

Só pro caso de variáveis de pacote.

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/


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