Page 1 of 1

ElapsedMilliseconds for C/C++

Posted: Thu Dec 09, 2010 1:42 am
by Mistrel
From what I understand, time() is implementation-specific. So I wrote a replacement using Win32. if anyone has a way of doing this in a standardized way that is more portable, I'm all ears.

I programmed this for C++. I'm assuming that it should work fine in C as well.

Code: Select all

INT64 elapsedMilliseconds() {
   SYSTEMTIME sysTime;
   FILETIME elapsed;
   INT64 posix;
   
   GetSystemTime(&sysTime);
   SystemTimeToFileTime(&sysTime, &elapsed);
   
   // FILETIME to POSIX
   posix = *(INT64*)&elapsed;
   
   posix = (posix - 116444736000000000) / 10000;
   
   return posix;
}

Re: ElapsedMilliseconds for C/C++

Posted: Thu Dec 09, 2010 1:55 am
by freak
I moved this to OffTopic. The Tips section is for PureBasic codes.

Re: ElapsedMilliseconds for C/C++

Posted: Thu Dec 09, 2010 2:12 pm
by Joakim Christiansen
Helping Kwaï chang caïne or something? :o

Re: ElapsedMilliseconds for C/C++

Posted: Thu Dec 09, 2010 11:16 pm
by idle
was there some problem with using GetTickCount_() ?

Re: ElapsedMilliseconds for C/C++

Posted: Fri Dec 10, 2010 5:01 am
by Nituvious
idle wrote:was there some problem with using GetTickCount_() ?
He may have wanted a cross platform function.

Re: ElapsedMilliseconds for C/C++

Posted: Fri Dec 10, 2010 3:32 pm
by DarkDragon
Nituvious wrote:
idle wrote:was there some problem with using GetTickCount_() ?
He may have wanted a cross platform function.
Euh.. but GetSystemTime and SystemTimeToFileTime are more WinAPI functions than one GetTickCount or timeGetTime.

Re: ElapsedMilliseconds for C/C++

Posted: Fri Dec 10, 2010 8:46 pm
by idle
I was just wondering if there was a difference with GetTickCount_() on 64 bit systems

Re: ElapsedMilliseconds for C/C++

Posted: Sat Dec 11, 2010 12:13 am
by Mistrel
GetTickCount_() has a 49 day resolution.

Re: ElapsedMilliseconds for C/C++

Posted: Sat Dec 11, 2010 12:59 am
by Rescator
idle wrote:I was just wondering if there was a difference with GetTickCount_() on 64 bit systems
Nope, which is why you should use GetTickCount64 it's only Windows 6.x or later but it gives you like hundreds of years before it wraps?