delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2008/01/08/13:42:18

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
X-YMail-OSG: QqOf2P0VM1le1VcaNlJw68AfQpoZEq5xdT74uDAFDmOGQBNFSq5NZckIJ6g6Grovg9s7JTITLFNx.mS2SrVSEFjW7bO0pWSRLk0gpdgfCg2iTJYF9n5xmIEuXSy0Aj6gC99nEZA-
Message-ID: <4783C3D9.6020303@sbcglobal.net>
Date: Tue, 08 Jan 2008 18:41:29 +0000
From: Greg Chicares <gchicares AT sbcglobal DOT net>
User-Agent: Thunderbird 2.0.0.9 (Windows/20071031)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: Does clock() work?
References: <4783B96D DOT 9060709 AT huarp DOT harvard DOT edu>
In-Reply-To: <4783B96D.9060709@huarp.harvard.edu>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019