Alguien sabe de alguna buena funcion multiplataforma para conseguir un timer con precision de milisegundos? Yo solía usar getTickCount pero es del api de windows, alguien sabe algo equivalente para gcc?
Gracias
En general para sistemas Unix tienes gettimeofday()
http://www.tin.org/bin/man.cgi?section=2&topic=gettimeofday
Mirate la implementación que hace SDL de GetTicks, igual te vale. Sino recuerdo mal, en cada sistema lo hace de una manera diferente.
Pues no es mala idea, voy a ver, gracias!
Si no recuerdo mal hay una función que te devuelve la resolución del reloj del sistema y otra el tiempo transcurrido en uSecs. A partir de ahí sacas los milisegundos con precisión. Hice algo con eso hace ya algún tiempo.
El problema de SDL es que usa muchas funciones internas de SDL y eso me lía mas.
Creo que al final me quedaré con esto:
long getTime()
{
#ifdef WIN32
return GetTickCount();
#else
tms tm;
return times(&tm);
#endif
}
En Windows tienes tambien los cronometros de alta precision que para ciertos casos pueden resultar muy utiles ya que permiten medir tiempos por debajo del milisegundo.
http://msdn2.microsoft.com/en-us/library/ms644904(VS.85).aspx
Salu2...
Ya, pero mi problema es que en windows ya tengo uno, pero necesito algo equivalente para el resto de SOs
Escribir una funcion como esa es tan , tan facil, que yo escribí la mía desde windows y me compiló y funcionó a la primera en Linux y en Mac.
Te cuento:
Windows: GetTickCount() y QueryPerformanceCounter()
Linux: gettimeofday()
Mac: GetEventTime() o gettimeofday()
Yo uso GetEventTime() en mac pero si no quieres usar carbon, gettimeofday() de UNIX también funciona (mac os x es un engendro unix al fin y al cabo).
Todas retornan un long que equivale a milisegundos?