Alto desempenho....
olá leitores do forum ClubeDelphi, preciso de sua ajuda.
faço aplicaçoes com muitos forms e calculos, mas as regras de otimização
(como criar forms dinamicamente e libera-los da memoria apos o uso) são significantes porem a aplicação ainda continua (relativamente) lenta.
será que existe algum método de otimização do codigo que eu poderia utilizar?
(como por exemplo o uso de ASSEMBLY em algumas funçoes, até já pesquisei, mas só achei tutos em ingles)
desde já , agradeço sua atenção!
[b:5744fe54c9]Título editado: ´ALTO DESEMPENHO....´[/b:5744fe54c9]
Por favor, não escreva o título do tópico utilizando caixa alta; é desagradável e equivale a gritar.
RELEIA as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.
Sandra/Moderação
faço aplicaçoes com muitos forms e calculos, mas as regras de otimização
(como criar forms dinamicamente e libera-los da memoria apos o uso) são significantes porem a aplicação ainda continua (relativamente) lenta.
será que existe algum método de otimização do codigo que eu poderia utilizar?
(como por exemplo o uso de ASSEMBLY em algumas funçoes, até já pesquisei, mas só achei tutos em ingles)
desde já , agradeço sua atenção!
[b:5744fe54c9]Título editado: ´ALTO DESEMPENHO....´[/b:5744fe54c9]
Por favor, não escreva o título do tópico utilizando caixa alta; é desagradável e equivale a gritar.
RELEIA as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] do fórum.
Sandra/Moderação
Iamatrix
Curtidas 0
Respostas
Raserafim
25/03/2005
criar todos os forms na inicialização do programa ou criá-los a medida que for utilizando vai depender de cada caso, vai depender do tipo de desempenho que vc procura. Criar todos os forms na inicialização vai provocar uma inicialização mais lenta, consumir mais memória e recursos do sistema, mas em compensação durante a utilização do programa vai ficar mais rápido pois não vai ser necessário criar e destruir forms toda vez que for abrir (isso vai ser verdade caso o programa não seja tão pesado a ponto de consumir quase toda a memória da máquina deixando-a lenta).
Criar os forms a medida que for utilizando, vc vai ter um programa mais leve que consome menos memória, que vai inicializar bem mais rápido, mas terá uma queda de desempenho durante a utilização do programa, já que tudo será criado na hora em que vaui utilizar.
Uma opção intermediária é criar o form no momento em que for utilizá-lo, mas não destruí-lo, ficando mais rápido na utilização segunte.
Um outro ponto importantíssimo (e que parece ser mais o seu caso) é utilizar as variáveis corretas, ou seja, utlizar o tipo de dado que realmente vai precisar e nunca (à menos estritamente necessário) utilizar variáveis do tipo variant. Além de utilizar bem a linguagem, usando bem o IF ELSE IF e o ELSE por exemplo.
Mas em relação ao assembly, realmente este pode ser mais rápido, já que faz as operações em baixo nível. porém sua utilização não é nenhum pouco simples.
E caso esteja utilizando banco de dados, um projeto muito bem feito ganha-se muito em desempenho. O banco com tipoos de campos bem definidos, bem normalizado, utilizando os índices necessários...
é isso æ
Criar os forms a medida que for utilizando, vc vai ter um programa mais leve que consome menos memória, que vai inicializar bem mais rápido, mas terá uma queda de desempenho durante a utilização do programa, já que tudo será criado na hora em que vaui utilizar.
Uma opção intermediária é criar o form no momento em que for utilizá-lo, mas não destruí-lo, ficando mais rápido na utilização segunte.
Um outro ponto importantíssimo (e que parece ser mais o seu caso) é utilizar as variáveis corretas, ou seja, utlizar o tipo de dado que realmente vai precisar e nunca (à menos estritamente necessário) utilizar variáveis do tipo variant. Além de utilizar bem a linguagem, usando bem o IF ELSE IF e o ELSE por exemplo.
Mas em relação ao assembly, realmente este pode ser mais rápido, já que faz as operações em baixo nível. porém sua utilização não é nenhum pouco simples.
E caso esteja utilizando banco de dados, um projeto muito bem feito ganha-se muito em desempenho. O banco com tipoos de campos bem definidos, bem normalizado, utilizando os índices necessários...
é isso æ
GOSTEI 0
Beppe
25/03/2005
A lentidão se deve a vícios de programação. Ou melhor, desenvolvimento, que é ver programação como mero utensílio.
Não existe UM método, mas várias práticas que se seguidas corretamente, você obterá resultados melhores. Você não foi específico quanto ao problema de lentidão(em que parte da execução do progama, o que pretendia fazer, etc), por isto só posso lhe falar sobre assembly. Escrever rotinas em assembly 1) levam mais tempo para serem escritas; 2) são mais difíceis de manter; 3) não dão uma performance muito melhor, no máximo 2x ou 3x no caso comum. Assembly é para casos em que você pode usar as instrução SIMD da máquina. No resto, o compilador do Delphi faz um trabalho muito bom.
Não existe UM método, mas várias práticas que se seguidas corretamente, você obterá resultados melhores. Você não foi específico quanto ao problema de lentidão(em que parte da execução do progama, o que pretendia fazer, etc), por isto só posso lhe falar sobre assembly. Escrever rotinas em assembly 1) levam mais tempo para serem escritas; 2) são mais difíceis de manter; 3) não dão uma performance muito melhor, no máximo 2x ou 3x no caso comum. Assembly é para casos em que você pode usar as instrução SIMD da máquina. No resto, o compilador do Delphi faz um trabalho muito bom.
GOSTEI 0
Iamatrix
25/03/2005
na verdade nao é possivel especificar ou detalhar meu problema de lentidão, na verdade estou estudando tecnicas ,ou, se preferir, práticas que façam um programa se tornar leve e rápido, sendo em um PentiumMMX ou num Athlon64 3200+.
se souber de alguma apostila, tutorial, livro, enfim, qualquer coisa que fale sobre desempenho de softwares, estarei interessado!
eh isso aew.... :?
se souber de alguma apostila, tutorial, livro, enfim, qualquer coisa que fale sobre desempenho de softwares, estarei interessado!
eh isso aew.... :?
GOSTEI 0
Weber
25/03/2005
Seu problema é com o Executavel ou com o Banco de Dados?
GOSTEI 0
Gandalf.nho
25/03/2005
Que tipo de aplicação é?
GOSTEI 0
Iamatrix
25/03/2005
meus aplicativos possuem varias imagens, o que torna o executavel mais atraente, e pesado. Se alguem souber como faço para jogar images para dll´s, estarei interessado!
Um programa para um dikpizza (cheio de imagens) que executa muitos comandos para calculo de pizzas, preços, quantidade de sabores (exe: meia calabresa meia mussarella), enfim, e no pentium100 do cliente acaba ficando um pouco lento.
quanto ao banco de dados, nao tenho problema pois nao é em rede e sao tabelas simples.
Um programa para um dikpizza (cheio de imagens) que executa muitos comandos para calculo de pizzas, preços, quantidade de sabores (exe: meia calabresa meia mussarella), enfim, e no pentium100 do cliente acaba ficando um pouco lento.
quanto ao banco de dados, nao tenho problema pois nao é em rede e sao tabelas simples.
GOSTEI 0
Weber
25/03/2005
Acho que o problema está no P100.
GOSTEI 0
Beppe
25/03/2005
Concordo com o weber, não vejo a necessidade de fazer atraente um programa para rodar num P100. Mas as imagens são para ilustração? E estão no HD ou no DB? Se o disco está sendo usado ativamente, a aplicação vai ser bem lenta. Veja se não pode deixar em memória o arquivo das imagens como JPEG(um formato compactado). Usar um formato compactado exige mais processamento, mas é mais rápido que carregar do disco.
GOSTEI 0