This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Does clock() work?


On 2008-01-08 17:57Z, Norton Allen wrote:
[snip code that times this inner loop:]
>
>       for ( i = 0; i < 8; i++ ) {
>         sleep(1);
>         cur_time = clock();
>         printf( "clock() = %ld\n", cur_time );
> 
> I would expect the clock() values to increase by approximately 1000 on 
> each iteration. (Yes, the sleep() seems to be working, as the lines come 
> out at about 1 Hz.)

I get similar results with the same program. According to
C99 7.23.2.1/2,
  "The clock function determines the processor time used."
so I'd guess that sleep() is consuming only wall-clock time.
Here's your program with an inner loop that consumes cycles:

/tmp[0]$cat clock_test.c
    #include <time.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <limits.h>

    int main( int argc, char **argv ) {
      clock_t cur_time, cps = CLOCKS_PER_SEC;
      int i, j;
      volatile unsigned int v;

      printf( "CLOCKS_PER_SEC = %ld\n", cps );
      for ( i = 0; i < 8; i++ ) {
        for ( j = 0; j < INT_MAX / 10; j++ ) {
          v++;
        }
        cur_time = clock();
        printf( "clock() = %ld\n", cur_time );
      }
      return 0;
    }

/tmp[0]$gcc -o clock_test.exe clock_test.c
/tmp[0]$./clock_test
CLOCKS_PER_SEC = 1000
clock() = 437
clock() = 859
clock() = 1265
clock() = 1687
clock() = 2093
clock() = 2515
clock() = 2937
clock() = 3343

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]