If encadeado deixa a aplicação lenta?

Bom dia, alguém sabe se if encadeado deixa a aplicação mais lenta?
e por que?

Depende de o que você está fazendo.

O que deixa a aplicação lenta é não saber o que está acontecendo :frowning:

[quote=nykel]Bom dia, alguém sabe se if encadeado deixa a aplicação mais lenta?
e por que?[/quote]

Eu não sei se deixa mais lenta, mas deixa bem ilegível… fica muito bagunçado quando você cria if’s encadeados…

A menos que você esteja usando uma aplicação em tempo real, o if encadeado não será um problema.

Agora, a partir do 4º if da cadeia, numa situação em que a entrada em cada ramo é bem distribuída e que as condições do if são simples, o polimorfismo terá performance melhor do que o if encadeado ou que um switch.

A performance do polimorfismo é muito estável, pois sempre há 2 saltos até o método desejado, enquanto no if essa performance é de até O(N), onde N é o número de condições testadas. Além disso, no polimorfismo nunca há o custo do teste em si.

Isso derruba completamente a teoria de que um código OO, mais estruturado, legível e fácil de manter é necessariamente menos veloz que um código estruturado. Na verdade, já passei pela situação de que para otimizar meu sistema, fui obrigado a substituir uma longa cadeia de ifs por polimorfismo. E com isso, tivemos um ganho não só de performance, mas também de legibilidade.

O melhor mesmo, quando estiver dúvida sobre a performance é usar um profiler, medir e testar. O Java tem um ótimo, chamado VisualVM, que vem junto com o JDK.

Ordenação e Pesquisa …

Complexidade de Algoritmos …

muito obrigado pelos esclarecimentos

Depende muito da sua aplicação, método de ordenação, métodos de busca.
Mas quanto mais ifs encadeados você utilizadar irá
aumentar a complexidade do seu algoritmo.