which time is counted by TStopwatch or what is CINT actually doing?

From: Pasha Murat (murat@cdfsga.fnal.gov)
Date: Tue Jan 20 1998 - 01:23:04 MET


	Hello,

in the example below I'm interactively running 2 test routines which I
consider to be exactly the same from the point of view of execution:
the only difference between them consists in that one line which 
*should never be executed* is uncommented in the second routine.

I'd also expect the execution times to be exactly the same.
However ROOT TStopwatch timer reports *very* strange results: 
the reported times differ by more than a factor of 100...

One could either suspect TStopwatch timer in reporting wrong time in one 
of 2 cases or CINT in doing much more than it has been asked to in case 
when `cout ...' is uncommented.

I should also mention that replacing `cout' in test2 with `printf' makes
both times *exactly* the same in agreement with the expectations...

	Could anybody comment on it?
						Thanks, Pasha

P.S. For the information to be complete <iostream.h> is included in logon macro.
--------------------------------------------------------------------------------
void test1 () {
  TStopwatch t;
  t.Start();
  int k;
  for (int i=0; i<100000; i++) {
    k = i;
    if (k == -1) {
      //      cout << " oops! " << endl;
    }
  }
  t.Stop();
  printf("RealTime=%f seconds, CpuTime=%f seconds\n",t.RealTime(),t.CpuTime());
}

void test2 () {
  TStopwatch t;
  t.Start();
  int k;
  for (int i=0; i<100000; i++) {
    k = i;
    if (k == -1) {
      cout << " oops! " << endl;
    }
  }
  t.Stop();
  printf("RealTime=%f seconds, CpuTime=%f seconds\n",t.RealTime(),t.CpuTime());
}
--------------------------------------------------------------------------------
root [1] test1()             
RealTime=0.230000 seconds, CpuTime=0.240000 seconds
root [2] test2()             
RealTime=28.810000 seconds, CpuTime=27.770000 seconds



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:29 MET