http://dl.dropbox.com/u/5047625/fruit-2 ... -win32.zip
Jim.
CPU time in Windows
Moderators: hgm, Rebel, chrisw
-
- Posts: 1383
- Joined: Fri Jul 14, 2006 7:56 am
- Location: London, England
- Full name: Jim Ablett
-
- Posts: 27790
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: CPU time in Windows
Wow, you are fast! Thanks!
-
- Posts: 900
- Joined: Tue Apr 27, 2010 3:48 pm
Re: CPU time in Windows
Actually that page is even more confusing, as it talks about "processing times" as well.Daniel Shawul wrote:I am surprized though why unix clock() measures the cpu time. C++ seems to define clock() as a measure of wall clock time http://www.cplusplus.com/reference/clib ... ime/clock/. It is mentioned that the reference could be different on different systems but nothing about some systems excluding I/O time.
-
- Posts: 4185
- Joined: Tue Mar 14, 2006 11:34 am
- Location: Ethiopia
Re: CPU time in Windows
That page is consistent with msvc implementation. OTOH glibc's implementation is weird for me.Actually that page is even more confusing, as it talks about "processing times" as well.
Code: Select all
/***
*clock_t clock() - Return the processor time used by this process.
*
*Purpose:
* This routine calculates how much time the calling process
* has used. At startup time, startup calls __inittime which stores
* the initial time. The clock routine calculates the difference
* between the current time and the initial time.
*
* Clock must reference _cinitime so that _cinitim.asm gets linked in.
* That routine, in turn, puts __inittime in the startup initialization
* routine table.
*
*Entry:
* No parameters.
* itime is a static structure of type timeb.
*
*Exit:
* If successful, clock returns the number of CLK_TCKs (milliseconds)
* that have elapsed. If unsuccessful, clock returns -1.
*
*Exceptions:
* None.
*
*******************************************************************************/
clock_t __cdecl clock (
void
)
{
unsigned __int64 current_tics;
FILETIME ct;
GetSystemTimeAsFileTime( &ct );
current_tics = (unsigned __int64)ct.dwLowDateTime +
(((unsigned __int64)ct.dwHighDateTime) << 32);
/* calculate the elapsed number of 100 nanosecond units */
current_tics -= start_tics;
/* return number of elapsed milliseconds */
return (clock_t)(current_tics / 10000);
}