Usei o exemplo do post anterior, de qualquer forma segue o código abaixo:
#include
#include
double tempo()
{
struct timeval tv;
gettimeofday(&tv,0);
return tv.tv_sec + tv.tv_usec/1e6;
}
int main()
{
double t1,t2;
double i;
t1 = tempo();
printf("%lf\t",t1);
for(i=0;i<300000000;i++);
t2 = tempo();
printf("%lf\t",t2);
printf("%lf\n",t2-t1);
return 0;
}
Na hora de compilar um programa com o GCC você pode colocar alguns parâmetros, vamos usar:
-O1 Otimiza para tamanho do binário
-O2 Otimiza para desempenho de execução
-O3 Otimiza para Data cache
* Atenção é "O" (letra) e não "0" (número).
Vamos aos testes:
[helton2@hrpc ~]$ gcc teste.c -O1
[helton2@hrpc ~]$ ./a.out
1243797632.612002 1243797633.767017 1.155015
Neste exemplo o tamanho do binário ficou em 6329 bytes e demorou 1.155 segundos.
[helton2@hrpc ~]$ gcc teste.c -O2
[helton2@hrpc ~]$ ./a.out
1243797643.222072 1243797644.371347 1.149275
Neste exemplo o tamanho do binário ficou em 6345 bytes e demorou 1.149 segundos.
[helton2@hrpc ~]$ gcc teste.c -O3
[helton2@hrpc ~]$ ./a.out
1243797650.764788 1243797651.959029 1.194241
Neste exemplo o tamanho do binário ficou em 6409 bytes e demorou 1.194 segundos.
Compilando da forma padrão ...
[helton2@hrpc ~]$ gcc teste.c
[helton2@hrpc ~]$ ./a.out
1243797667.095339 1243797670.080635 2.985296
Neste exemplo o tamanho do binário ficou em 6369 bytes e demorou 2.985 segundos.
Como aqui estamos tratando de um problema fácil, apenas um simples "for" a diferença é pequena, mas com problemas mais complexos, sem dúvida essas opções de compilação podem dar um "up" no seu programa.
As opções aqui abordadas são válidas para a maioria dos compiladores C e C++ tanto em ambiente unix, linux, mac e windows.
Dica de Claudio Schepke. Obrigado!
Nenhum comentário:
Postar um comentário