fiz um teste aqui dos compiladores usando o Número_de_Fibonacci do wikpedia, só com uma pequena modificação, o codigo-fonte modificado é esse aqui:
http://pt.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci#include <stdio.h>
#include <stdlib.h>
// protótipo da função
int fibonacci(int x);
int main(int argc, char *argv[])
{
int a=43, i;
/* printf("Informe a Sequencia de Fibonacci Desejada: ");
scanf("%d", &a);*/
for(i=0; i<=a-1; i++){
printf("O Fibonacci do Numero: %d e: %d\n", i+1, fibonacci(i+1));
}
// system("PAUSE");
return 0;
}
// função com retorno e entrada de parametro por valores : o,1,4,9,6
int fibonacci(int x){
if ((x==1)||(x==2)){
return 1;
}else{
return fibonacci(x-1)+fibonacci(x-2);
}
}
salvei como fbcii.c.
agora o resultado dos testes de cada compilador e cflags:
gcc-4.4 fbcii.c -o fbcii
time ./fbcii = 14.6
gcc-4.4 -Os fbcii.c -o fbcii
time ./fbcii = 7.0
gcc-4.4 -O1 fbcii.c -o fbcii
time ./fbcii = 11.8
gcc-4.4 -O2 fbcii.c -o fbcii
time ./fbcii = 5.3
gcc-4.4 -O3 fbcii.c -o fbcii
time ./fbcii = 5.9
gcc-4.4 -march=native fbcii.c -o fbcii
time ./fbcii = 15.1
gcc-4.4 -Os -march=native fbcii.c -o fbcii
time ./fbcii = 7.0
gcc-4.4 -O2 -march=native fbcii.c -o fbcii
time ./fbcii = 5.4
gcc-4.5.3 fbcii.c -o fbcii
time ./fbcii = 14.6
gcc-4.5.3 -Os fbcii.c -o fbcii
time ./fbcii = 7.0
gcc-4.5.3 -O1 fbcii.c -o fbcii
time ./fbcii = 12.1
gcc-4.5.3 -O2 fbcii.c -o fbcii
time ./fbcii = 5.3
gcc-4.5.3 -O3 fbcii.c -o fbcii
time ./fbcii = 5.8
gcc-4.5.3 -march=native fbcii.c -o fbcii
time ./fbcii = 15.5
gcc-4.5.3 -Os -march=native fbcii.c -o fbcii
time ./fbcii = 7.0
gcc-4.5.3 -O2 -march=native fbcii.c -o fbdcii
time ./fbcii = 5.4
é vai um grafico da cituação:
http://www.baixa.la/arquivo/1195282aqui é um notebook acer 4540 athlon II x2 4G de ram, ubuntu 10.04
como podem ver não faz muita diferença entre as versões do gcc, e também não vi muita diferença em usar ou não o -march=native,
façam os testes aé e ve se muda pra melhor alguma coisa, pelo que vi a coisa tá feia.
valeu