Quantidade de Varíaveis X Performance
Olá colegas,
Uma dúvida simples que sempre tive, mas nunca consegui comprovar: a quantidade de variáveis declaradas pode comprometer a performance do sistema?
Trabalho com muitas rotinas parecidas e que utilizam variaveis. Para nao declará-las em todos os módulos, faço isso na unit principal. A questão que gera a minha dúvida é que, como o form principal do sistema fica sempre ativo, as variáveis ali declaradas também estarão sempre ativas. Se fossse num outro form, a variável seria eliminada da memória assim que o form fosse destruído, certo?
Então, se eu tiver tipo umas 60, 70 variáveis declaradas na unit principal do projeto, isso pode comprometer o desempenho do sistema. Me refiro a velocidade do programa, claro.
Obrigado.
Uma dúvida simples que sempre tive, mas nunca consegui comprovar: a quantidade de variáveis declaradas pode comprometer a performance do sistema?
Trabalho com muitas rotinas parecidas e que utilizam variaveis. Para nao declará-las em todos os módulos, faço isso na unit principal. A questão que gera a minha dúvida é que, como o form principal do sistema fica sempre ativo, as variáveis ali declaradas também estarão sempre ativas. Se fossse num outro form, a variável seria eliminada da memória assim que o form fosse destruído, certo?
Então, se eu tiver tipo umas 60, 70 variáveis declaradas na unit principal do projeto, isso pode comprometer o desempenho do sistema. Me refiro a velocidade do programa, claro.
Obrigado.
Armindo
Curtidas 0
Respostas
Onjahyr
08/03/2008
Bom, Todas elas estão na memória, dependendo do que está armazenado e a quantidade, sim...
Por que você não utiliza arquivos tipados do pascal: [b:cb0872285c]TRecord[/b:cb0872285c], ou [b:cb0872285c]Array[/b:cb0872285c], ou TIniFile ou então TRegistry?
Variáveis é bom você criar somente nas procedures ou nas functions, ao sair dela (ao executar um processo) ela será destruída.
[b:cb0872285c]CUIDADO[/b:cb0872285c] com variável global, use com moderação!
Por que você não utiliza arquivos tipados do pascal: [b:cb0872285c]TRecord[/b:cb0872285c], ou [b:cb0872285c]Array[/b:cb0872285c], ou TIniFile ou então TRegistry?
Variáveis é bom você criar somente nas procedures ou nas functions, ao sair dela (ao executar um processo) ela será destruída.
[b:cb0872285c]CUIDADO[/b:cb0872285c] com variável global, use com moderação!
GOSTEI 0
Armindo
08/03/2008
Bom, Todas elas estão na memória, dependendo do que está armazenado e a quantidade, sim...
Por que você não utiliza arquivos tipados do pascal: [b:9f9c9677be]TRecord[/b:9f9c9677be], ou [b:9f9c9677be]Array[/b:9f9c9677be], ou TIniFile ou então TRegistry?
Variáveis é bom você criar somente nas procedures ou nas functions, ao sair dela (ao executar um processo) ela será destruída.
[b:9f9c9677be]CUIDADO[/b:9f9c9677be] com variável global, use com moderação!
Prezado onjahyr,
Obrigado pela resposta, mas minha dúvida ainda continua.
Vamos a um exemplo mais prático:
Situação 1
Var
VReposta1, VReposta2, VReposta3, VReposta4, VReposta5 : boolean;
Situação 2
Var
VRespostas : Array[1..5] of boolean;
Pelo que entendi da sua resposta, a situação 2 seria mais recomendada nesse caso?
Em relação ao seu comentário: ´CUIDADO com variável global, use com moderação!´, poderia ser mais específico? Qual o seriam os riscos ou problemas com variáveis globais?
Obrigado
GOSTEI 0
Edilcimar
08/03/2008
uma variável global é utilizada em todo o programa, ela ´nasce´ quando inicia o programa é só ´morre´ quando o programa é finalizado, portanto utiliza a memória o tempo todo, quanto a uma variável pública, a mesma nasce com um form, é utilizado por ele e por qualquer form de descenda dele, e é destruída com ele, uma variável privada, nasce com um form e morre quando o mesmo é fechado, uma variável local, nasce quando vc acessa uma procedure e morre quando deixa de utilizá-la
GOSTEI 0
Armindo
08/03/2008
Vamos supor o seguinte:
Desenvolve dois projeto:
[b:417f83f9f1]No projeto 1[/b:417f83f9f1], crio 30 variáveis globais to dipo boolean e mais 30 variáveis globais to tipo Tdate. Atribuo-lhes false e date(), respecitvamente, no create do form principal.
No projeto 2: Todas as rotinas, exatamente iguais ao projeto 1, só que sem essas 60 variáveis.
Pergunto: haverá substancial diferença na performance entre os dois projetos?
Desenvolve dois projeto:
[b:417f83f9f1]No projeto 1[/b:417f83f9f1], crio 30 variáveis globais to dipo boolean e mais 30 variáveis globais to tipo Tdate. Atribuo-lhes false e date(), respecitvamente, no create do form principal.
No projeto 2: Todas as rotinas, exatamente iguais ao projeto 1, só que sem essas 60 variáveis.
Pergunto: haverá substancial diferença na performance entre os dois projetos?
GOSTEI 0
Onjahyr
08/03/2008
Não haverá, mas dependendo do que seu programa faz pode ser que outros meios seja mais conveniênte.
Você usa estas variáveis o tempo todo no programa? Se a resposta for ´sim´, então deixe do jeito que você está fazendo mesmo!
O programa é grande (com muitos forms, muitos processos, etc...) e você não usa estas variáveis constantemente (apenas numa parte do programa ou num processo) então, seria melhor você armazenar num TIniFile ou TRegistry e depois exluir da memória assim que o processo finalizar.
Tudo depende do que você está fazendo e do período de tempo que vai permanecer fazendo, se lê e salva o tempo todo estas variáveis...
Blz.
Você usa estas variáveis o tempo todo no programa? Se a resposta for ´sim´, então deixe do jeito que você está fazendo mesmo!
O programa é grande (com muitos forms, muitos processos, etc...) e você não usa estas variáveis constantemente (apenas numa parte do programa ou num processo) então, seria melhor você armazenar num TIniFile ou TRegistry e depois exluir da memória assim que o processo finalizar.
Tudo depende do que você está fazendo e do período de tempo que vai permanecer fazendo, se lê e salva o tempo todo estas variáveis...
Blz.
GOSTEI 0