analise:#include <stdio.h>#include <stdlib.h>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;}1 - Criamos uma funcao que retorna um double, a funcao tempo()double tempo(){ struct timeval tv; gettimeofday(&tv,0); return tv.tv_sec + tv.tv_usec/1e6;}Essa funcao declara uma variavel chamada tv, que e do tipo da struct timeval (lembre... essa struct esta definida no arquivo time.h). Depois chamamos a funcao propriamente, passando um ponteiro para nossa variavel tv e o segundo parametro como a documentacao sugere com valor nulo.Depois dividimos os microsegundos por 1000000 para converte-los em segundos (deixe 1e6, nao sei porque, mas se dividir por 1000000 nao vai dar certo ... isso ainda e um misterio), somamos a esse resultado os os segundos de agora. A struct timeval tem dois atributos, tv_sec (os segundos de agora) e tv_usec (os microsegundos do segundo de agora). Como nossa variavel se chama tv, entao para acessar os microsegundos usamos tv.tv_usec.Agora o main de nosso programa: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;}Declaramos t1 e t2 do tipo double (a mascara para double e %lf lembra?) e tambem um i que vai ser nosso contador.Queremos medir quanto tempo demorou um for de 0 ate 300000000 (300 milhoes), por isso guardamos o tempo de agora em t1 e depois do for em t2, mostramos isso na tela (ja vai ver porque). Diminuimos t1 de t2 e temos em segundos quanto que demorou nosso bloco de codigos.Compilando ...gcc teste.cmv a.out testeCompilei (gerou o a.out) e renomeei isso para teste.Executando:./testeVai produzir um resultado como:1240195429.991010 1240195432.975001 2.983991Temos o tempo inicial, tempo final e a diferenca. Atencao!! Se voce tiver um computador lento e aconselhavel diminuir o tamanho do for ... a nao ser que tenha paciencia.Estou rodando o programa num computador:uname -aLinux hrpc 2.6.27.14 # i686 Intel(R) Pentium(R) 4 CPU 3.00GHz GNU/LinuxLegal!! Descobrimos que demorou 2.98 segundos ... mas pense bem, foi a primeira vez que eu executei o programa na maquina ... sera que nas vezes seguintes vai ser diferente o tempo? Talvez o programa ja vai estar carregado na memoria? E ... fora o programa eu tenho mais varios outros processos executando em meu computador... sera que eles nao interferem?So tem uma maneira de saber... rodando mais vezes o programa e vendo o tempo que resultou...Segue abaixo um shell script que faz o programa executar 50 vezes e guarda (acumulando) o valor dos printf em um arquivo. Atencao para o caminho dos arquivos ai na sua maquina.#!/bin/shi=1while [ $i -le 50 ]do /home/helton2/teste >> /home/helton2/resultados.txt i=`expr $i + 1`doneexit 0Este codigo ai acima e do arquivo runteste.sh, criamos esse arquivo e damos permissao de execucao a ele (chmod +x runteste.sh), ai ele e um executavel igual nosso programa em C.Para roda-lo entao:./runteste.shIsso vai criar em "/home/helton2/" o arquivo "resultados.txt" com valores semelhantes (depende de em que dia voce esta executando e quao rapida e sua maquina) aos listado abaixo:1240195429.991010 1240195432.975001 2.9839911240195432.980598 1240195436.225005 3.2444071240195436.230919 1240195439.232810 3.0018911240195439.238001 1240195442.226818 2.9888171240195442.231239 1240195445.222347 2.9911081240195445.228246 1240195448.210298 2.9820521240195448.216515 1240195451.466147