Re: [ROOT] time consuming

From: Victor Perevoztchikov (perev@bnl.gov)
Date: Sun Feb 04 2001 - 19:19:00 MET


Hi Volodja,

>  Is it a normal situation ?

yes, it is. 

case 2 slightly more complex than case 1, so it is slower.


case 3 is fastest , because it is not a CINT any more but normal
compilation. It must be much faster.

Cheers, Victor.




babintsev@mx.ihep.su wrote:
> 
>      babintsev@mx.ihep.su,  4-FEB-2001
> 
> Hello rooters.
> I have a simple program below which has different time
> consuming in the following 3 cases:
> (ROOT Version   2.25/03 )
> 
>  1) program has lines:
>     .....
>        // case 1:
>        one_ev[1] = i;
>     .....
> 
>     [] .L toy1.C
>     []  exam()
>        .......
>       CpuTime=6.860000 seconds
> 
>  2) program has lines:
>     .....
>          // case 2:
>          one_ev[j*10+1] = i;
>     .....
> 
>     [] .L toy1.C
>     []  exam()
>        .......
>       CpuTime=11.290000 seconds
> 
>  3) case 2, but:
>     [] .L toy1.C++
>     []  exam()
>        ........
>       CpuTime=0.150000 seconds
> 
>  Is it a normal situation ?
> 
> ....... ............ program ..............
> #ifndef __CINT__
> 
> // UNIX include
> #include <stdlib.h>
> #include "iostream.h"
> 
> // ROOT include
> #include "TROOT.h"
> #include "TFile.h"
> #include "TMath.h"
> #include "TRandom.h"
> #include "TTree.h"
> #include "TBranch.h"
> #include "TClonesArray.h"
> #include "TStopwatch.h"
> #include "TCanvas.h"
> #include "TApplication.h"
> #include "TBenchmark.h"
> #include "TPaveLabel.h"
> #include "TPaveText.h"
> #include "TH1.h"
> #include "TH2.h"
> #include "TProfile.h"
> #include "TNtuple.h"
> #endif
> 
> Float_t one_ev[10000];
> 
> //----------------------//
> int exam()
> {
>   //...   Create a timer object to benchmark this loop
>    TStopwatch timer;
>    timer.Start();
> 
>    Int_t nentries = 10000;
>    Double_t told = 0;
>    Double_t tnew = 0;
>    Int_t printev = 2000;
> 
>    for (Int_t i=0; i<nentries;i++) {
>        if (i%printev == 0) {
>          tnew = timer.RealTime();
>          printf("event:%d, rtime=%f s\n",i,tnew-told);
>          told=tnew;
>          timer.Continue();
>        }
> 
>        for (Int_t j=0; j<1000; j++) {
>          // case 1:
>          //         one_ev[1] = i;
> 
>          // case 2:
>          one_ev[j*10+1] = i;
>        }
>    }
> 
>    //...  Stop timer and print results
>     timer.Stop();
>     Double_t rtime = timer.RealTime();
>     Double_t ctime = timer.CpuTime();
>     printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
> 
>    return 0;
> }
> 
> ......end of program ..............
> 
> with best wishes,
>                                    Volodja Babintsev

-- 
Victor M. Perevoztchikov   perev@bnl.gov  perev@vxcern.cern.ch       
Brookhaven National Laboratory MS 510A PO Box 5000 Upton NY 11973-5000
tel office : 631-344-7894; fax 631-344-4206; home 631-345-2690



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:35 MET