Ir ao conteúdo
  • Cadastre-se
Merephet

Processamento If/Else

Recommended Posts

Tenho 100 mil testes de 'M' ou 'F'(duas situações), dentre estes testes eu sei que 99 mil são 'M' e somente 1 mil são 'F'. Ocorreria alguma demora na hora de testar se eu colocar primeiro if como 'F'? E porque?

Exemplo (var X)


for 1 to 100000 do
if X = 'F'
then
-- (será feito 1 mil vezes)
else
-- (será feito 99 mil vezes)

OBS:

Não existe outros testes subsequentes ou quais quer outros tipos de testes e a programação do 'M' e 'F' são a mais simples possível(não é relevante no caso).

São a quantidade de testes na sua posição, pois teria que passar 99 mil vezes pelo if para então executar o else enquanto somente 1 mil vezes pelo if (que por sua vez irá executar o comando sem passar pelo else).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho 100 mil testes de 'M' ou 'F'(duas situações), dentre estes testes eu sei que 99 mil são 'M' e somente 1 mil são 'F'. Ocorreria alguma demora na hora de testar se eu colocar primeiro if como 'F'? E porque?

Exemplo (var X)


for 1 to 100000 do
if X = 'F'
then
-- (será feito 1 mil vezes)
else
-- (será feito 99 mil vezes)

OBS:

Não existe outros testes subsequentes ou quais quer outros tipos de testes e a programação do 'M' e 'F' são a mais simples possível(não é relevante no caso).

São a quantidade de testes na sua posição, pois teria que passar 99 mil vezes pelo if para então executar o else enquanto somente 1 mil vezes pelo if (que por sua vez irá executar o comando sem passar pelo else).

De certo modo a diferença vai ser pouca. (são poucas as opções).

Mas com certeza colocando o "M" primeiro vai ser mais rápido. Ora, se 99% das ocorrências são "M", é melhor colocá-lo antes, para ser logo encontrada!. Imagine uma lista com 5.000 opções (em if/else), se a opção que você quer tiver no final da lista, você terá que percorrer if por if... é muito trabalho não? Mas se tiver no início, logo após encontrar, o programa vai "pular" as outras linhas!!! (essa é uma das idéias do if/else, se não pulasse fariam-se 2 ifs, por exemplo!!!!

PS: Se for o caso crie um programa para testar!!! Nem sempre a lógica mais óbvia (no sentido lógico, estrutural, etc) é a mais rápida!!! O que vale são os testes!!! (também conhecido como Benchmarking), ou seja, na prática, os fim (resultados) justificam os meios (estrutura). !!!

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas isso poderia variar de linguagem para linguagem, pois também fiquei com essa ideia, se colocasse 'M' em primeiro ele iria pular o else logo não iria executar 1 linha que seria o if e depois faria o else.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mas isso poderia variar de linguagem para linguagem, pois também fiquei com essa ideia, se colocasse 'M' em primeiro ele iria pular o else logo não iria executar 1 linha que seria o if e depois faria o else.

Não estou entendendo o que você está falando... (na verdade nem muito no primeiro post) rs

Mas vou resumir objetivamente:

O Pascal ler "da esquerda para direita, e de cima para baixo" !

Quanto mais rápido ele achar a opção a ser executada melhor... entra no if é melhor que passar pelo if e entrar no else, para o else ele vai ter que passar pelo if antes (são duas etapas).

Como tem mais "M" que "F", o "M' tem que vir primeiro!

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

É assim, eu já cogitei também que poderia ser mais rápido se colocar o 'M' (que vem mais vezes) primeiro, pois assim na hora de checar ele não passa pelo if primeiro para depois fazer o else, pois já chegaria e fazeria o if se o 'M' viesse primeiro, agora é o seguinte: Em outras linguagens, poderia se você souber, me dizer se o modo de leitura, ou alguma coisa do genênero, influenciaria na velocidade do teste? (liguagem de nivel baixo, por exemplo)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×