Medir Tempo de Execução [RESOLVIDO]

1. Medir Tempo de Execução [RESOLVIDO]

Wander Daniel Domingues
wddlinux

(usa Debian)

Enviado em 06/03/2007 - 11:12h

Olá Pessoal,

Gostaria de saber se alguem tem "em mãos" alguma função em C que possa medir o tempo em que um programa gastou para ser executado.....
Valew.......Abraços


  


2. Re: Medir Tempo de Execução [RESOLVIDO]

Gabriel Assis Bezerra
gabriel.bezerra

(usa Gentoo)

Enviado em 06/03/2007 - 20:20h

procura pelo codigo fonte do comando time do linux, ele serve justamente para isso.


3. time.h

Diego da Silva de Medeiros
diegotosco

(usa Slackware)

Enviado em 06/03/2007 - 20:58h

Você pode usar as funções da lib time.h para calcular quanto tempo demorou para a execução do seu programa, pegando o horário que iniciou a execução do seu programa e o horário final. Subtraindo os dois, tem-se a duração.

Não sei se é bem isso que tu quer,
Falô


4. Re: Medir Tempo de Execução [RESOLVIDO]

Filipe Niero Felisbino
filipe

(usa Suse)

Enviado em 08/03/2007 - 09:39h

Eu uso a seguinte classe:

class MedeTempo {
private:
string funcao;
clock_t inicio;
public:
MedeTempo(const string &f) {
inicio = clock();
funcao = f;
}
~MedeTempo() {
clock_t total = clock() - inicio;
cout << "Tempo para a funcao " << funcao << ": (segundos) "<< double(total)/CLOCKS_PER_SEC<<endl;
}
};

É bem simples e útil... basta instanciar esta classe e ela vai imprimir o tempo na stdout automaticamente.

ou seja...

int main(int argc, char* argv[]) {
MedeTempo mt("main");
for (int i=0; i<10; i++) {
sleep(1);
}
}

Vai imprimir automaticamente quando mt sair do escopo ;)

Espero ter ajudado..

Filipe N. Felisbino
www.cppbrasil.com


5. Re: Medir Tempo de Execução [RESOLVIDO]

Ugo raga
ugoraga

(usa Outra)

Enviado em 14/02/2009 - 10:37h

cara achei
http://www.dca.fee.unicamp.br/~lotufo/cursos/EA877/sistemas-operacionais/exemplos/tempo.c
/*

Programa tempo.c - exemplo de utilização da chamada fork(); é uma versão
modificada do exemplo da seção 1.5.2 (pags. 9-10) da apostila de
sistemas operacionais (Magalhães, Cardozo, Faina).

Historico: criado por Magalhaes, Cardozo
Modificado: Mauro Aurelio
Roberto Lotufo 6nov96

Compilacao: gcc tempo.c -o tempo

Execucao: tempo <comando>
onde <comando> pode ser ls por exemplo

Sugestao de Modificacoes:
1. Retire a chamada wait(NULL) e observe o comportamento
2. Faca com que cada processo imprima o seu pid
o pid 'e obtido chamando-se getpid()
*/

#include <stdio.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <sys/types.h>

main(int argc, char *argv[])
{
int pid;
struct timeval tv1, tv2;
double t1, t2;

if(argc != 2)
{
printf("Uso: tempo algum_comando\n");

}

pid = fork(); /* fork */
if(pid == 0) {
printf("\nProcesso filho vai executar %s agora.\n",argv[1]);
gettimeofday(&tv1, NULL); /* processo pai continua ... */
t1 = (double)(tv1.tv_sec) + (double)(tv1.tv_usec)/ 1000000.00;
system(argv[1]); /* processo filho executa comando */
gettimeofday(&tv2, NULL);
t2 = (double)(tv2.tv_sec) + (double)(tv2.tv_usec)/ 1000000.00;
printf("\nExecucao de %s terminou agora.\n",argv[1]);
printf("\nO tempo de execucao de %s por filho foi: %lf\n",
argv[1], (t2 - t1));
}
else{
gettimeofday(&tv1, NULL); /* processo pai continua ... */
t1 = (double)(tv1.tv_sec) + (double)(tv1.tv_usec)/ 1000000.00;
/* wait(NULL); */ /* sincroniza com o termino do filho */
gettimeofday(&tv2, NULL);
t2 = (double)(tv2.tv_sec) + (double)(tv2.tv_usec)/ 1000000.00;
printf("\nO tempo de execucao de processo pai foi: %lf\n",(t2 - t1));
}
}




6. Re: Medir Tempo de Execução [RESOLVIDO]

Thiago Salgado Monteiro
scrim

(usa Debian)

Enviado em 14/02/2009 - 10:47h

Cara... o pessoal ai escreveu tanta coisa que eu fiquei bolado, enfim... pra você medir o tempo de execução de uma maneira simples sem tantas classes e tudo mais. colcoa a biblioteca #include time.h

inicio = clock();
no fim da aplicação vc coloca fim = clock();
depois resultado = fim - inicio
simples cara... o que você vai ter que mexer é em relação a saida o formato da hora.... apenas..


7. Uma auternativa

maxsbory
maxsbory

(usa Slackware)

Enviado em 10/04/2009 - 23:54h

Boa voce pode tentar tambem isto:

#include<time.h>
#include<stdout.h>

int main(){

time_t inicio, fim;
int t;
inicio = time(NULL);

printf("ALguma coisa.!\n");
for(t = 0; t < 40000; t++);
/* Em fim. tudo o programa deve esta apartir da chamada:
incio = time(NULL) */

fim = time(NULL); //Isto deve ficar no final
fprintf(stdout, "O tempo de execucao em segundos é %f\n", difftime(fim, inicio);
return;
}
pronto.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts