delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2004/07/08/06:46:06

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: "Alex Vinokur" <alexvn AT foot DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Microsoft clock()
Date: Thu, 8 Jul 2004 13:34:54 +0300
Lines: 157
Message-ID: <2l4majF8iuhdU1@uni-berlin.de>
X-Trace: news.uni-berlin.de T8INyx8dc95hVhJG33tbCgfrigP0B2Jqs3ghV0ICo8X4G2kZw=
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1409
X-Mimeole: Produced By Microsoft MimeOLE V6.00.2800.1409
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Victor Bazarov test at
  http://groups.google.com/groups?selm=%23gH7pzEZEHA.992%40TK2MSFTNGP10.phx.gbl
  detected problematic behavior of clock() on Microsoft Windows.

That concerns gpp (DJGPP) too.
Note. g++ (Cygwin) generates valid CPU used time.

============
Windows 2000
============


--------- C++ code : foo.cpp : BEGIN ---------
#include <ctime>
#include <iostream>
#include <cassert>
#include <unistd.h>
using namespace std;

int main()
{
time_t   start_time,   end_time;
clock_t  start_clock,  end_clock;

clock_t  diff_clock;
time_t   diff_time;


   start_time  = time(NULL);
   if (start_time == time_t(-1))
   {
     cout << "Unable to get start time()" << endl;
     return 1;
   }

   start_clock = clock();
   if (start_clock == clock_t(-1))
   {
     cout << "Unable to get start clock()" << endl;
     return 1;
   }


   sleep (3);

   end_time  = time(NULL);
   if (end_time == time_t(-1))
   {
     cout << "Unable to get end time()" << endl;
     return 1;
   }

   end_clock = clock();
   if (end_clock == clock_t(-1))
   {
     cout << "Unable to get end clock()" << endl;
     return 1;
   }


   // -------------------------
   assert (!(start_time  == (time_t)-1));
   assert (!(end_time    == (time_t)-1));

   assert (!(start_clock == (clock_t)-1));
   assert (!(end_clock   == (clock_t)-1));

   // -------------------------
   diff_time  = end_time - start_time;
   diff_clock = end_clock - start_clock;

   cout << endl;
   cout << "time  : "
        << "start = " << start_time << " sec"
        << ", end = " << end_time << " sec"
        << endl;
   cout << "time  : "
        << "elapsed (wall clock) time = " << double (diff_time) << " sec"
        << endl;

   cout << endl;
   cout << "clock : "
        << "start = " << start_clock << " ticks"
        << ", end = " << end_clock << " ticks"
        << endl;
   cout << "clock : "
        << "cumulative processor time = " << double(diff_clock)/CLOCKS_PER_SEC << " sec"
        << endl;


   return 0;
}

--------- C++ code : foo.cpp : END -----------



--------- Compilation & Run : BEGIN ---------

$ gpp -v
Reading specs from c:/djgpp/lib/gcc-lib/djgpp/3.32/specs
Configured with: /devel/gnu/gcc/3.3/gnu/gcc-3.32/configure i586-pc-msdosdjgpp --
prefix=/dev/env/DJDIR --disable-nls
Thread model: single
gcc version 3.3.2


$ gpp foo.cpp -o dj.exe

$ dj

time  : start = 1089292733 sec, end = 1089292736 sec
time  : elapsed (wall clock) time = 3 sec

clock : start = 0 ticks, end = 275 ticks
clock : cumulative processor time = 3.02198 sec




$ g++ -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.3.1/specs
Configured with: /GCC/gcc-3.3.1-3/configure --with-gcc --with-gnu-ld --with-gnu-
as --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexe
cdir=/usr/sbin --mandir=/usr/share/man --infodir=/usr/share/info --enable-langua
ges=c,ada,c++,f77,pascal,java,objc --enable-libgcj --enable-threads=posix --with
-system-zlib --enable-nls --without-included-gettext --enable-interpreter --enab
le-sjlj-exceptions --disable-version-specific-runtime-libs --enable-shared --dis
able-win32-registry --enable-java-gc=boehm --disable-hash-synchronization --verb
ose --target=i686-pc-cygwin --host=i686-pc-cygwin --build=i686-pc-cygwin
Thread model: posix
gcc version 3.3.1 (cygming special)

$ g++ foo.cpp -o cyg.exe

$ cyg

time  : start = 1089281988 sec, end = 1089281991 sec
time  : elapsed (wall clock) time = 3 sec

clock : start = 20 ticks, end = 30 ticks
clock : cumulative processor time = 0.01 sec


--------- Compilation & Run : END -----------


So, one can see that gpp and g++ generate quite different "cumulative processor time".
It seems that "cumulative processor time" generated by g++ (Cygwin) is more believable.

-- 
   Alex Vinokur
     http://mathforum.org/library/view/10978.html
     http://sourceforge.net/users/alexvn



- Raw text -


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