ordepavr Posted May 21, 2009 at 08:17 PM Report #266253 Posted May 21, 2009 at 08:17 PM Olá, eu estou a fazer um programa e gostava de contar o tempo que o utilizador demorou a resolver o jogo. Não fasso ideia de como contar o tempo... queria uma forma de contar o tempo durante o programa e saber se da para contar o tempo de X a X sitios por exemplo: coloco no inicio a começar a contagem e quero que a contagem pare num determinado sitio.. isso é possivel? outra forma era contar o programa ate ao fim.... espero que me possam ajudar cumps, Pedro Lopes "Programming is like sex: one mistake and you're providing support for a lifetime.""A exigência conduz à excelência"
nata79 Posted May 21, 2009 at 08:31 PM Report #266258 Posted May 21, 2009 at 08:31 PM para contar o tempo até que o programa termine, se for em linux, podes usar a função time, fazes na consola: time ./prog para contares o tempo de determinada parte do código, podes utilizar a função gettimeofday que te dá o tempo actual do sistema. contas o tempo antes da parte que queres testar, contas no fim e fazes a diferença. mais info: http://rabbit.eng.miami.edu/info/functions/time.html arithmeticoverflow.wordpress.com
edsousa Posted May 21, 2009 at 10:10 PM Report #266293 Posted May 21, 2009 at 10:10 PM Tens algumas variantes. A primeira é a mais simples, mas a resolução é em segundos. A segunda, conforme a sugesão do nata79, com gettimeofday pode ir até aos microsegundos, mas cuidado, o relógio pode contar de 10 em 10 milisegundos (e não microsegundos sequer). A terceira é uma maneira de contar tempo assincronamente, usando sinais. Por exemplo, dá para implementar um tempo limite, ao fim do qual se termina o jogo. #include <time.h> int main(){ // // time_t start = time(NULL); //tempo em segundos desde um pré-determinadomomento no passado (the Epoch) // // // time_t diff = time(NULL) - start; } #include <sys/time.h> int main(){ // // struct timeval t; gettimeofday(&t,NULL); //tempo em segundos e microsegundos desde um pré-determinadomomento no passado (the Epoch) // // // } #include <unistd.h> #include <alarm.h> void alarm_handler(int sig) { if(sig == SIGALRM) { //fazer qualquer coisa alarm(60); //reiniciar o alarme } } int main(){ signal(SIGALRM, alarm_handler); //registar o handler para o sinal SIGALRM // // alarm(60); //daqui a um minuto a execução do programa será suspensa e executada o handler // // // } Tharis Fan ClubMay Tharis bless you
TheDark Posted May 22, 2009 at 09:17 AM Report #266357 Posted May 22, 2009 at 09:17 AM Note-se que as duas últimas sugestões do edsousa só funcionam sem bibliotecas extra em ambientes *NIX. Desaparecido.
edsousa Posted May 22, 2009 at 01:12 PM Report #266462 Posted May 22, 2009 at 01:12 PM Não necessariamente. Em Windows tb pode ser escrito código POSIX. Ver http://technet.microsoft.com/en-us/library/bb463220.aspx Tharis Fan ClubMay Tharis bless you
TheDark Posted May 23, 2009 at 01:34 AM Report #266658 Posted May 23, 2009 at 01:34 AM Segundo percebi, o link que mostraste explica que é necessário estar a correr uma KORN Shell, que implementa um subsistema UNIX no Windows. Se assim for, o que disse mantém-se. Se percebi mal, por favor corrijam-me. Desaparecido.
rafzk Posted November 5, 2009 at 02:34 PM Report #294851 Posted November 5, 2009 at 02:34 PM e contar o tempo que um programa demorou a carregar um ficheiro? como se faz?
edsousa Posted November 6, 2009 at 12:05 AM Report #294936 Posted November 6, 2009 at 12:05 AM struct timeval t1,t2; gettimeofday(&t1,NULL); ler_ficheiro(); gettimeofday(&t2,NULL); //fazer contas com t2 e t1 (segundos de t2 - segundos de t1; microseg de t2-microseg de t1. se negativo, +1 000 000 microsec e -1 segundo) Tharis Fan ClubMay Tharis bless you
falk0n Posted November 6, 2009 at 01:30 AM Report #294944 Posted November 6, 2009 at 01:30 AM E profiling da aplicação não seria melhor ? uma vez que queres estar a medir alguns tens é possível que o profiling te dê alguma ajuda. Boas programações
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now