X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-bounces using -f From: "Alex Vinokur" Newsgroups: comp.os.msdos.djgpp Subject: Re: uclock_t & gcc 3.0.4 on Windows-2000 Date: Mon, 29 Apr 2002 09:03:19 +0200 Organization: Scopus Lines: 306 Message-ID: References: <3CCC0690 DOT CFF305C6 AT is DOT elta DOT co DOT il> NNTP-Posting-Host: gateway.scopus.net (62.90.123.5) X-Trace: fu-berlin.de 1020060109 11330923 62.90.123.5 (16 [79865]) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com "Eli Zaretskii" wrote in message news:3CCC0690 DOT CFF305C6 AT is DOT elta DOT co DOT il... | Alex Vinokur wrote: | > | > Unfortunaly the clock() has insufficient time accuracy. | > Details : | > 1. Log file : on Windows2000 when using clock() | > http://groups.google.com/groups?selm=aa8ubf%248pubf%241%40ID-79865.news.dfncis.de | > (or news:aa8ubf$8pubf$1 AT ID-79865 DOT news DOT dfncis DOT de in news:misc.test ) | > 2. Log file : on Windows98 when using uclock() | > http://alexvn.freeservers.com/s1/pf_dir/log5.txt | | Sorry, I cannot figure out what does the URL under 1. say, and I cannot | access number 2. I don't know why there is a problem with access to http://alexvn.freeservers.com/s1/pf_dir/log5.txt | | Can you summarize what you see on these two systems? What accuracy do you | observe? Summary : || ###### C++ Pseudocode : BEGIN ###### // Something like #define TOTAL_ITERATIONS #define PER_CALLS // PER_CALLS < TOTAL_ITERATIONS // ----------------------- class ClassPerfoMeterUclock { private : uclock_t start_time_; uclock_t end_time_; public : ClassPerfoMeterUclock () { start_time_ = uclock(); } ~ClassPerfoMeterUclock () { end_time_ = uclock(); // Calculation run time (per PER_CALLS); } } // ----------------------- class ClassPerfoMeterClock { private : clock_t start_time_; clock_t end_time_; public : ClassPerfoMeterClock () { start_time_ = clock(); } ~ClassPerfoMeterClock () { end_time_ = clock(); // Calculation run time (per PER_CALLS); } } // ----------------------------- void demo_11 (void) { char str[] = "ABCD"; #ifded WIN98 ClassPerfoMeterUclock ins_meter(); #endif #ifded WIN2000 ClassPerfoMeterClock ins_meter(); #endif for (int i = 0; i < TOTAL_ITERATIONS; i++ ) { strlen(str); } } || ###### C++ Pseudocode : END ######## || ###### Windows98 & uclock : BEGIN ###### ======================== Windows98 gcc version 2.95.3 GNU C++ version 2.95.3 20010315/djgpp (release) (djgpp) compiled by GNU C version 2.95.3 20010315/djgpp (release). ======================== ------------------------- --- Testing demo_11() --- ------------------------- -- TOTAL_ITERATIONS == 90000 -- PER_CALLS == 10000 --------------------------------------------- --- Results sorted according to a test number --------------------------------------------- Test[ 1] : 582 [ 90000 iterations] Test[ 2] : 583 [ 90000 iterations] Test[ 3] : 582 [ 90000 iterations] Test[ 4] : 684 [ 90000 iterations] Test[ 5] : 582 [ 90000 iterations] Test[ 6] : 583 [ 90000 iterations] Test[ 7] : 583 [ 90000 iterations] Test[ 8] : 582 [ 90000 iterations] Test[ 9] : 583 [ 90000 iterations] Test[ 10] : 582 [ 90000 iterations] Test[ 11] : 583 [ 90000 iterations] Test[ 12] : 590 [ 90000 iterations] Test[ 13] : 582 [ 90000 iterations] Test[ 14] : 583 [ 90000 iterations] Test[ 15] : 582 [ 90000 iterations] || ###### Windows98 & uclock : END ######## || ###### Windows2000 & clock : BEGIN ###### ======================== Windows-2000 Intel(R) Pentium R(4) CPU 1.70GHz gcc version 3.0.4 GNU CPP version 3.0.4 (cpplib) (80386, BSD syntax) GNU C++ version 3.0.4 (djgpp) compiled by GNU C version 3.0.4. Configured with: ../configure i586-pc-msdosdjgpp --prefix=/dev/env/DJDIR --disable-nls Thread model: single -- CLOCKS_PER_SEC == 91 --> from time.h ======================== ------------------------- --- Testing demo_11() --- ------------------------- -- TOTAL_ITERATIONS == 750000 -- PER_CALLS == 250000 --------------------------------------------- --- Results sorted according to a test number --------------------------------------------- Test[ 1] : 0 [ 750000 iterations] ---> Too small Test[ 2] : 0 [ 750000 iterations] ---> Too small Test[ 3] : 0 [ 750000 iterations] ---> Too small Test[ 4] : 0 [ 750000 iterations] ---> Too small Test[ 5] : 0 [ 750000 iterations] ---> Too small Test[ 6] : 0 [ 750000 iterations] ---> Too small Test[ 7] : 0 [ 750000 iterations] ---> Too small Test[ 8] : 1 [ 750000 iterations] Test[ 9] : 1 [ 750000 iterations] Test[ 10] : 0 [ 750000 iterations] ---> Too small Test[ 11] : 0 [ 750000 iterations] ---> Too small Test[ 12] : 0 [ 750000 iterations] ---> Too small Test[ 13] : 0 [ 750000 iterations] ---> Too small Test[ 14] : 0 [ 750000 iterations] ---> Too small Test[ 15] : 0 [ 750000 iterations] ---> Too small || ###### Windows2000 & clock : END ######## APPENDIX. File time.h on Windows2000 || ###### Windows2000 -> File time.h : BEGIN ###### /* Copyright (C) 1999 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ #ifndef __dj_include_time_h_ #define __dj_include_time_h_ #ifdef __cplusplus extern "C" { #endif #ifndef __dj_ENFORCE_ANSI_FREESTANDING /* 65536(tics/hour) / 3600(sec/hour) * 5(scale) = 91.02 The 5 is to make it a whole number (18.2*5=91) so that floating point ops aren't required to use it. */ #define CLOCKS_PER_SEC 91 #include /* Some programs think they know better... */ #undef NULL #define NULL 0 __DJ_clock_t #undef __DJ_clock_t #define __DJ_clock_t __DJ_size_t #undef __DJ_size_t #define __DJ_size_t __DJ_time_t #undef __DJ_time_t #define __DJ_time_t struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; char *__tm_zone; int __tm_gmtoff; }; char * asctime(const struct tm *_tptr); clock_t clock(void); char * ctime(const time_t *_cal); double difftime(time_t _t1, time_t _t0); struct tm * gmtime(const time_t *_tod); struct tm * localtime(const time_t *_tod); time_t mktime(struct tm *_tptr); size_t strftime(char *_s, size_t _n, const char *_format, const struct tm *_tptr); time_t time(time_t *_tod); #ifndef __STRICT_ANSI__ #define CLK_TCK CLOCKS_PER_SEC extern char *tzname[2]; void tzset(void); #ifndef _POSIX_SOURCE #define tm_zone __tm_zone #define tm_gmtoff __tm_gmtoff struct timeval { time_t tv_sec; long tv_usec; }; struct timezone { int tz_minuteswest; int tz_dsttime; }; #include typedef long long uclock_t; #define UCLOCKS_PER_SEC 1193180 int gettimeofday(struct timeval *_tp, struct timezone *_tzp); unsigned long rawclock(void); int select(int _nfds, fd_set *_readfds, fd_set *_writefds, fd_set *_exceptfds, struct timeval *_timeout); int settimeofday(struct timeval *_tp, ...); void tzsetwall(void); uclock_t uclock(void); #endif /* !_POSIX_SOURCE */ #endif /* !__STRICT_ANSI__ */ #endif /* !__dj_ENFORCE_ANSI_FREESTANDING */ #ifndef __dj_ENFORCE_FUNCTION_CALLS #endif /* !__dj_ENFORCE_FUNCTION_CALLS */ #ifdef __cplusplus } #endif #endif /* !__dj_include_time_h_ */ || ###### Windows2000 -> File time.h : END ######## Thanks in advance, -- ==================== Alex Vinokur http://up.to/alexvn http://go.to/alexv_math mailto:alexvn AT bigfoot DOT com mailto:alexvn AT go DOT to ====================