Diferença de velocidade entre o operador If-Else e Ternary em C…?
Por sugestão de um colega, acabei de testar a diferença de velocidade entre o operador ternário e o bloco If-Else equivalente ... e parece que o operador ternário gera código que está entre 1x e 2x mais rápido que o If-Else. Meu código é:
gettimeofday(&tv3, 0);
for(i = 0; i < N; i++)
{
a = i & 1;
if(a) a = b; else a = c;
}
gettimeofday(&tv4, 0);
gettimeofday(&tv1, 0);
for(i = 0; i < N; i++)
{
a = i & 1;
a = a ? b : c;
}
gettimeofday(&tv2, 0);
(Desculpe por usar gettimeofday e não clock_gettime ... vou me esforçar para melhorar.)
Tentei alterar a ordem em que cronometrei os blocos, mas os resultados parecem persistir. O que da? Além disso, o If-Else mostra muito mais variabilidade em termos de velocidade de execução. Devo examinar o assembly que o gcc gera?
Aliás, tudo isso está no nível de otimização zero (-O0
Estou imaginando isso, ou há algo que não estou levando em consideração, ou isso depende de uma máquina ou o quê? Qualquer ajuda é apreciad