melhorando as declaraçoes IF

Delphi

27/07/2004

if (a > b) then
maior = true
else
maior = false

podem ser facilmente convertidades para:

maior = a > b;
eu vi esse exemplo em uma apostila,so que na nao fala nada,alguem poderia me passa outo exemplo de como melhorar as declraçoes IF´S ?


Anicetojunior

Anicetojunior

Curtidas 0

Respostas

Beppe

Beppe

27/07/2004

1) Esta otimização que mostrou, simplesmente propaga o valor da comparação, o que vem a ser positivo na maioria dos casos.

2) Se a expressão que governa o [b:0e7c750ee6]if[/b:0e7c750ee6] for uma lista de [b:0e7c750ee6]and[/b:0e7c750ee6] e/ou [b:0e7c750ee6]or[/b:0e7c750ee6], vc deveria por o mais simples*, para evitar que operações custosas e desnecessárias sejam executadas. Em modo normal, a avaliação é ´curto-circuito´, não avalia o resto da expressão quando ela se mostra verdadeira.

3) Coloque o corpo do [b:0e7c750ee6]then [/b:0e7c750ee6]e [b:0e7c750ee6]else[/b:0e7c750ee6], envolto de [b:0e7c750ee6]begin[/b:0e7c750ee6]/[b:0e7c750ee6]end[/b:0e7c750ee6]. Eu não costumo fazer isso, mas vai lhe ajudar a deixar seu cóigo mais legível.

4) Use [b:0e7c750ee6]case[/b:0e7c750ee6] quando for fazer vários testes na mesma expressão, e ela é de tipo ordinal.

Não é uma lista extensiva, só alguns items que me veio agora. :wink:

* Mais simples = consome menos código


GOSTEI 0
Rômulo Barros

Rômulo Barros

27/07/2004

[color=red:197061e429][b:197061e429]Respondendo:[/b:197061e429][/color:197061e429]

Exemplo:

a := 5;
b := 10;
maior := a > b; // Maior receberá ´False´, pois ´a´ não é maior que ´b´
maior := a < b; // Maior receberá ´True´, pois ´a´ é maior que ´b´

Entendeu agora? :wink: :wink:


GOSTEI 0
Anicetojunior

Anicetojunior

27/07/2004

eu tenho a seguinte espressao
if query1.recordcount > 0 then
showmessage(´dados encontrados´)
else
showmessage(´dados nao encontrados´);
end;

como eu posso fazer para melhorar isso de acordo do que foi passado anteriormente ?


GOSTEI 0
Lucas Silva

Lucas Silva

27/07/2004

if query1.recordcount > 0 then showmessage(´dados encontrados´) else showmessage(´dados nao encontrados´); end; como eu posso fazer para melhorar isso de acordo do que foi passado anteriormente ?


Desta Forma fica bem mais rápido!
if query1.IsEmpty then
showmessage(´dados nao encontrados´)
else
  showmessage(´dados  encontrados´);



GOSTEI 0
Beppe

Beppe

27/07/2004

como eu posso fazer para melhorar isso de acordo do que foi passado anteriormente ?

Que tipo de melhora pretende alcançar?

Seguir a dica do Lucas é algo que deve fazer, isto deve melhorar a performance. Vc também pode colocar a string numa variável e chamar a função fora do loop, mas isso naum acarretaria em ganho de velocidade.


GOSTEI 0
POSTAR