delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2004/07/08/00:02:04

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
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
To: cygwin AT cygwin DOT com
From: "Alex Vinokur" <alexvn AT connect DOT to>
Subject: What does clock() return?
Date: Thu, 8 Jul 2004 07:01:31 +0300
Lines: 106
Message-ID: <cciguv$e7o$1@sea.gmane.org>
X-Complaints-To: usenet AT sea DOT gmane DOT org
X-Gmane-NNTP-Posting-Host: 82.166.218.119
X-Newsreader: Microsoft Outlook Express 6.00.2800.1409

Here is an article http://groups.google.com/groups?selm=2l2ucgF7jv50U1%40uni-berlin.de
from http://groups.google.com/groups?group=microsoft.public.vc.language


"Victor Bazarov" <v DOT Abazarov AT comAcast DOT net> wrote in message news:%23gH7pzEZEHA DOT 992 AT TK2MSFTNGP10 DOT phx DOT gbl...
> Is it a known issue that in VC++ RTL the function 'clock()'
> reports the wall clock instead of CPU time used?  I ran this
> test program on Windows and Unix:
> -----------------------------------------
> #include <iostream>
> #include <ctime>
>
> using namespace std;
>
> int main()
> {
>      time_t t0 = time(0);
>      clock_t c0 = clock();
>
>      for (int i = 0; i < 10; ++i)
>      {
>          cout << "push > " << flush;
>          char a;
>          cin >> a;
>          cout << endl;
>      }
>
>      cout << "Difference in wall clock is "
>           << difftime(time(0), t0) << endl;
>      cout << "Difference in CPU ticks is "
>           << double(clock() - c0) / CLOCKS_PER_SEC << endl;
>
>      return 0;
> }
> -------------------------------------------
> and got very similar values on Windows and quite different
> values on Unix.  It seems that on Windows it just takes the
> time() at the beginning and then 'clock' simply takes the
> difference between current time and the stored value and
> multiplies it with CLOCKS_PER_SEC...
>
> I know of GetProcessTimes() function, but couldn't 'clock()'
> be implemented to use it?
>
> Thanks.
>
> Victor

Windows 2000.
The problem is not only with VC++ RTL.

The program has been compiled:
* with Microsoft C++ 13.00.9466 for 80x86
  cl /EHsc program.cpp -o a_ms.exe

* with gcc version 3.3.1 (cygming special)
   g++ -mno-cygwin -o a_mgw program.cpp     // Use the Mingw32 interface
   g++ -o a_cyg program.cpp  // Cygwin


Here are results:

$ a_ms
[---omitted---]
Difference in wall clock is 11
Difference in CPU ticks is 11.847

$ a_mgw
[---omitted---]
Difference in wall clock is 10
Difference in CPU ticks is 10.925

$ a_cyg
[---omitted---]
Difference in wall clock is 9
Difference in CPU ticks is 0.03


Here are DLLs:
a_ms.exe
  C:\WINNT\system32\KERNEL32.dll
    C:\WINNT\system32\NTDLL.DLL

a_mgw.exe
  C:\WINNT\system32\msvcrt.dll
    C:\WINNT\system32\KERNEL32.dll
      C:\WINNT\system32\NTDLL.DLL

a_cyg.exe
  C:\cygwin\bin\cygwin1.dll
    C:\WINNT\system32\ADVAPI32.DLL
      C:\WINNT\system32\NTDLL.DLL
      C:\WINNT\system32\KERNEL32.DLL
      C:\WINNT\system32\RPCRT4.DLL


It seems that the problem is in DLLs (?).


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





--
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