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