Rulez
09-01-2010, 14:35
Ciao a tutti :D
Avevo bisogno per un programmino di fare un semplice bechmark che si basa sul tempo di esecuzione di un pezzo di codice.. il più semplice possibile.
In rete ho trovato questo codice:
/*
* A timer in C
* author: Danny Battison
* contact: gabehabe@hotmail.com
*/
#include <time.h>
#include <stdio.h>
clock_t BeginTimer()
{
//timer declaration
clock_t Begin; //initialize Begin
Begin = clock() * CLK_TCK; //start the timer
return Begin;
}
clock_t EndTimer(clock_t begin)
{
clock_t End;
End = clock() * CLK_TCK; //stop the timer
return End;
}
int main ()
{
double begin = BeginTimer();
printf ("Timer set to: %.2f\n", begin); // print the initialised timer (0)
// process to be timed goes here
printf ("Enter something to stop the timer: ");
char input;
scanf ("%c", &input);
// variable declarations used for time calculation
float elapTicks;
float elapMilli, elapSeconds, elapMinutes;
// variable definitions on to calculate time taken
elapTicks = EndTimer(begin); // stop the timer, and calculete the time taken
elapMilli = elapTicks/1000; // milliseconds from Begin to End
elapSeconds = elapMilli/1000; // seconds from Begin to End
elapMinutes = elapSeconds/60; // minutes from Begin to End
printf ("Milliseconds passed: %.2f\n", elapMilli);
printf ("Seconds passed: %.2f\n", elapSeconds);
printf ("Minutes passed: %.2f", elapMinutes);
// hold the window open
char dummy;
scanf ("%c", &dummy);
return 0;
}
Lo compilo una prima volta sotto ubuntu9.10 con l'ultima versione di gcc e mi dice che CLK_TCK non è dichiarato. Ok, cerco online la nuova "variabile" e fixo cambiandolo in CLOCK_PER_SEC. Lo ricompilo poi con successo!
Lancio il programma (sempre da riga di comando) ed il risultato è:
Enter something to stop the timer:
Milliseconds passed: 0.00
Seconds passed: 0.00
Minutes passed: 0.00
Il bello arriva quando lo eseguono altri miei amici sulle proprie macchine (di cui uno col mio stesso os) con però un risultato positivo! Cioè funzionava..
Guardando il codice è facile capire che la funzione "clock()" mi ritorna sempre 0 (in quanto anche con un define della costante "moltiplicatore" il risultato è sempre il medesimo :|
Perchè solo a me questo programmino non va?
Ps. il programma è eseguito su un portatile ASUS F3S che ha un multicore intel. Però non penso sia dovuto al processore il problema in quanto anche gli altri miei amici (che hanno testato il programma con successo) hanno pure loro il core 2 duo della intel
:help:
Avevo bisogno per un programmino di fare un semplice bechmark che si basa sul tempo di esecuzione di un pezzo di codice.. il più semplice possibile.
In rete ho trovato questo codice:
/*
* A timer in C
* author: Danny Battison
* contact: gabehabe@hotmail.com
*/
#include <time.h>
#include <stdio.h>
clock_t BeginTimer()
{
//timer declaration
clock_t Begin; //initialize Begin
Begin = clock() * CLK_TCK; //start the timer
return Begin;
}
clock_t EndTimer(clock_t begin)
{
clock_t End;
End = clock() * CLK_TCK; //stop the timer
return End;
}
int main ()
{
double begin = BeginTimer();
printf ("Timer set to: %.2f\n", begin); // print the initialised timer (0)
// process to be timed goes here
printf ("Enter something to stop the timer: ");
char input;
scanf ("%c", &input);
// variable declarations used for time calculation
float elapTicks;
float elapMilli, elapSeconds, elapMinutes;
// variable definitions on to calculate time taken
elapTicks = EndTimer(begin); // stop the timer, and calculete the time taken
elapMilli = elapTicks/1000; // milliseconds from Begin to End
elapSeconds = elapMilli/1000; // seconds from Begin to End
elapMinutes = elapSeconds/60; // minutes from Begin to End
printf ("Milliseconds passed: %.2f\n", elapMilli);
printf ("Seconds passed: %.2f\n", elapSeconds);
printf ("Minutes passed: %.2f", elapMinutes);
// hold the window open
char dummy;
scanf ("%c", &dummy);
return 0;
}
Lo compilo una prima volta sotto ubuntu9.10 con l'ultima versione di gcc e mi dice che CLK_TCK non è dichiarato. Ok, cerco online la nuova "variabile" e fixo cambiandolo in CLOCK_PER_SEC. Lo ricompilo poi con successo!
Lancio il programma (sempre da riga di comando) ed il risultato è:
Enter something to stop the timer:
Milliseconds passed: 0.00
Seconds passed: 0.00
Minutes passed: 0.00
Il bello arriva quando lo eseguono altri miei amici sulle proprie macchine (di cui uno col mio stesso os) con però un risultato positivo! Cioè funzionava..
Guardando il codice è facile capire che la funzione "clock()" mi ritorna sempre 0 (in quanto anche con un define della costante "moltiplicatore" il risultato è sempre il medesimo :|
Perchè solo a me questo programmino non va?
Ps. il programma è eseguito su un portatile ASUS F3S che ha un multicore intel. Però non penso sia dovuto al processore il problema in quanto anche gli altri miei amici (che hanno testato il programma con successo) hanno pure loro il core 2 duo della intel
:help: