Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

dicas3d

Eficiência de um programa.

Mensagens Recomendadas

dicas3d

Olá comunidade, Estou a criar este tópico para dar umas dicas sobre eficiência. Neste tópico gostava que indicassem as vossas dicas, indicando tambem a linguagem a que se refere se for exclusivo de alguma linguagem segundo o exemplo que darei na próxima mensagem.


Abraços

dicas3d

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
dicas3d

Vecotores/ variavies : Devem usar as variáveis ou vectores sempre sempre com a mais pequena quantidade de valores possivel e evitando vectores, especialmente bidimensionais e tridimnesionais.

Funções/procedimentos : Sempre que possível deve-se usar o algoritmo da função directamente no sitio onde eventualmente seria necessário usar uma função. Isto vale tambem para funções e procedimentos pré-programados.

Tamanho dos algoritmos : Quando se usam funções pré-programadas para se obter um valor, sempre que saibamos que os valores da funçãos são <>, o ideal é colocálos numa variável.

Obs: Vale mais vários if's ou cases encaixados ou uma unica linha de if com todas as condições?


Abraços

dicas3d

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
dicas3d

Já agora, antes que escrevas esse tópico, quando se fala aqui em eficiência é falar em ideias com desempenho diferente.

Não se está a falar de truques que dão ganhos de centésimos ou milésimos de segundo. Esses são irrelevantes!!!

Tipicamente, a ideia correcta resolve um problema em menos de um segundo, enquanto as ideias para 40..70 pontos poderão precisar de minutos,horas,dias ou mais para o resolver.

Aproveito para acrecentar que tambem podem fazer a sugestão do mogers, isto é por aqui ideias vossas, e podem tambem dar exemplos, como eu agora.

Se tiverem que avaliar um conjunto de nºs primos contidos numa string, que tem x comprimento, o ideal é sempre que tiverem de programar a excepção á regra eliminar os multiplos de 2, 3, 5 e 7 (os proprios 2, 3, 5 e 7), façam um if logo que saibam o comprimento para dizer ao programa para não fazer o resto do algoritmo, como? Se numero = '2 'então primo <- false, etc.


Abraços

dicas3d

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Warrior

Todas as optimizações que referiste são completamente irrelevantes.

A maioria já é efectuada pelo compilador (assim como coisas muito mais complexas), e mesmo que não seja, são optimizações que na melhor das hipóteses nos poupam algo na casa dos microsegundos.

Tirando raras excepções, qualquer optimização digna de esforço encontra-se no lado do algoritmo, não do código.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruileal

Todas as optimizações que referiste são completamente irrelevantes.

A maioria já é efectuada pelo compilador (assim como coisas muito mais complexas), e mesmo que não seja, são optimizações que na melhor das hipóteses nos poupam algo na casa dos microsegundos.

Tirando raras excepções, qualquer optimização digna de esforço encontra-se no lado do algoritmo, não do código.

Concordo plenamente, eu prefiro dar prioridade a leitura do próprio código em si por parte de quem o venha a alterar mais tarde

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedroserra

Era uma vez um software que consumia muita memória usado numa empresa.

Um dia a equipa de programação resolveu por fim ao "desperdício" de recursos e passaram um mês inteiro a analisar a aplicação e a implementar optimizações.

No final do mês apresentaram os resultados às chefias lá da zona: tinham conseguido reduzir para 1/10 a memória necessária para executar o software.

Comentário do chefe: "- Quanta memória tem o servidor actualmente? E quanto é que custava ter comprado uns MB extra?"

Regra de ouro: "Os computadores são baratos, os programadores são caros."

Vale mais ter um código legível que poupe tempo aos "humanos" do que tentar ganhar uns milisegundos naquela funcionalidade que nem sequer é muito usada.


Ah e tal não sei quê...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Era uma vez um software que consumia muita memória usado numa empresa.

Regra de ouro: "Os computadores são baratos, os programadores são caros."

... o chefe despediu os programadores, e gastou 100€ em memória novas. Passado uns meses, o negócio ia de vento em popa, menos despesa, mais lucros. O programa, que geria os stocks, as contas, o volume de vendas, os ordenados de toda a gente, corria perfeitamente.

Um belo dia, ao lançar umas encomendas novas, o programa crasha com um erro tão trivial como Array Index Out of Bounds. Telefona ao ex-chefe da equipa de programação, que tem a maior satisfação da vida dele ao responder... "temos pena"...  :biggrin:

Se as optimizações, tal como deste no teu exemplo, são de 1000%, tem lá paciência, mas são optimizações a fazer mesmo, porque a versão original era uma verdadeira nódoa.

Para ganhar alguns milissegundos, então é melhor estar quieto - mas o teu exemplo é fraquito.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Acho que não se tratou tanto de um exemplo mas sim de uma história que demonstra bem o quão inútil é a tentativa de qualquer optimização como as mencionadas.

Se estão preocupados com este tipo de optimizações, então têm as prioridades trocadas. A não ser que tenham um algoritmo que seja a causa de algum problema, não têm nada para optimizar, e mesmo o algoritmo problemático só pode ser detectado durante a utilização da aplicação, com tudo pronto, já que antes de termos a aplicação a funcionar não temos forma de adivinhar se vai ou não ser lento, e mesmo que seja, pode ser um problema que se pode ignorar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.