Esta noticia foi arquivada.
Este tópico está fechado e foi movido para Noticia - Arquivo.
+ Caso tenha atualizações você poderá criar outro tópico.
Este tópico está fechado e foi movido para Noticia - Arquivo.
+ Caso tenha atualizações você poderá criar outro tópico.


info
Grupo: Campones
Registrado: 13/08/09
Posts: 18
Reputação: 0
Uma das coisas que mais me fascina em OpenTibia é a facilidade e o incentivo dado pelos desenvolvedores aos usuários de poderem modificar, adicionar ou mesmo remover alguma funcionalidade por meio de scripts. Com isso, é possível que muitas pessoas leigas no assunto possam fazer muitos códigos, que por mais que funcionem, podem pecar quando o assunto é desempenho.
É necessário então uma otimização nos sistemas, e para isso, elaborei algumas formas de melhorar estes processos:
1. Veja se seu sistema realmente quer melhorias
É normal ver programadores criticando outras pessoas por falarem que o algoritmo não está tão eficiente como poderia estar. Porém, não ache que ele é o dono da verdade, muitas vezes otimizar algum sistema é sinônimo de abdicar de alguns recursos que a forma que fora desenvolvido o proporciona.
Algumas vezes você melhora a performace à custa de perder flexibilidade. Outras vezes, uma alteração para melhorar a performace agora poderá ter um custo adicional em manutenção do sistema no futuro.
2. Cuidado ao usar recursividade
Recursividade é uma técnica bastante útil para definir-se algo parcialmente em termos de si mesmo. Podemos usar em programação para chamar funções dentro delas mesmas. Exemplos clássicos disso são algoritmos como o de fatorial ou mesmo da série Fibonacci.
Apesar de facilitar a vida do programador, a recursão usa mais memória do sistema para acomodar variáveis a cada chamada. Além disso, o estado corrente da computação tem que ser armazenado para permitir a volta da chamada recursiva. É recomendado então, não usar algoritmos recursivos quando existe uma solução óbvia por interação, tais como uma razão de termos que seja comum.
3. Escolha entre temporaridade ou espaço
Infelizmente quando queremos um sistema efetivo, é preciso escolher entre ter o menor tempo de execução possível ou uso de menos espaço. Tenha em mente que para avaliar a complexidade de seu algoritmo qual desses dois fatores deseja otimizar
4. Evite açúcares
A maioria das linguagens usam diversos syntax suggars que nada mais são que “atalhos” para acesso de um recurso que não é muito elegante. Em gerenciamento de software o uso deste recurso é bem utilizado, porém, infelizmente se o objetivo é performace, deve-se evitar quando possível.
5. Tome cuidado em controles de fluxo
A principal maneira de se otimizar um sistema é checando pelos controladores de fluxo deste.
Condições
Laços de repetição
for _, v in ipairs(vetor) do
-- código
end
O ?_? serve para pular o retorno e também para variáveis temporárias
for k, v in pairs(vetor) do
--
end
for i = 1, 10000 do
local x = math.sin(I)
end
O processamento do exemplo acima é 30% mais lento do que:
local sin = math.sin(I)
for i = 1, 10000 do
local x = sin
end
6. Não confie no garbage collector
Esteja atento à criação de objetos temporários quando se passa parâmetros do tipo class de/para funções. Seu programa pode perder muito tempo criando e destruindo objetos temporários, independentemente do compilador e da plataforma. Apesar de Lua, Java entre outras linguagens possuirem garbage collector (GC), pode ser que estes não hajam da forma mais adequada. Além disso, é uma boa prática caso você um dia migre para uma linguagem que não conte com esse recurso.
>>> Leia na XMagazine