B20.1 clock() function bug?

J. J. Farrell jjf@bcs.org.uk
Sun Feb 28 23:02:00 GMT 1999


> From: Brian P Kasper <Brian.P.Kasper@notes.aero.org>
>> I'm getting different answers from the clock() function
> under Cygwin B20.1 and Microsoft Visual C++ 6.0.
>> I'm using the clock() function and the CLOCKS_PER_SEC
> #define to time the execution of some code. I'm also comparing
> the run time with the real world using a stopwatch.
>> If I run the program for 10 seconds by my stopwatch, the Visual C++
> version of the code reports that 10 seconds have passed. If I
> run the Cygwin version for 10 seconds, the program reports that
> only 6 seconds have passed.
>> My understanding is that clock() reports the number of system
> clock ticks which have passed since the program started executing.
> According to the the VC++ documentation,
>> The clock function,s era begins (with a value of 0) when the
> C program starts to execute.
> It returns times measured in 1/CLOCKS_PER_SEC (which
> equals 1/1000 for Microsoft C).

clock() is a Standard C function defined as returning
 the implementation's best approximation to the processor time
 used by the program since the beginning of an implementation-
 defined era related only to the program invocation.
The term "processor time used" is not defined, and I guess that
VC++ and Cygwin are interpreting it differently. It looks like
Cygwin's interpretation is closer to the traditional UNIX one. I
don't see how you could reasonably equate elapsed time to processor
time on a multi-tasking OS, so I'd say the VC++ version is buggy
- or at least that it's "best" isn't very good.
Dividing by CLOCKS_PER_SEC is the correct way to convert it to
seconds.
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /