Re: Slower and slower...

From: Valeri Fine (Faine) (fine@bnl.gov)
Date: Thu Sep 16 1999 - 17:45:32 MEST


> Dear ROOTers,
> 
> I do not understand why the function (in file "b.C")
> 
> void b(void)
> {
>   TPaveText t(0.05,0.05,0.95,0.95);
>   for( int i=0; i<100000; i++ )
>   {
>     gBenchmark->Start("A");
>     t.Clear();
>     t.AddText("Slower and slower....");
>     t.Draw();
>     gBenchmark->Show("A");
>   }
> }
> 

>From the piece of the code of TObject::Draw below one may conclude 
your macro does include one and the same object up to 100000 times 
and forse the current Canvas (even it is dummy one for "-b" - batch mode")
to draw it over and over up to 100000 copies of the one and the same
TPaveText object. That's why it is slower and slower


> void b(void)
> {
>   TPaveText t(0.05,0.05,0.95,0.95);
>   for( int i=0; i<100000; i++ )
>   {
>     gBenchmark->Start("A");
>     t.Clear();
>     t.AddText("Slower and slower....");
>     t.Draw();
>     gBenchmark->Show("A");
>   }
> }

The "right" test should look as follows:

 void b(void)
 {
   TPaveText t(0.05,0.05,0.95,0.95);
   t.Draw();
   for( int i=0; i<100000; i++ )
   {
      gBenchmark->Start("A");
      t.Clear();
      t.AddText("Slower and slower....");
     gPad->Modified();
     gPad->Update();    
     gBenchmark->Show("A");
   }
 }

  Hope this helps,
                                    Valery
====================================
//______________________________________________________________________________
void TObject::Draw(Option_t *option)
{   AppendPad(option); }

//______________________________________________________________________________
void TObject::AppendPad(Option_t *option)
{
   // Append graphics object to current pad. In case no current pad is set
   // yet, create a default canvas with the name "c1".
 
   SetBit(kObjInCanvas);
   gPad->GetListOfPrimitives()->Add(this,option);
   gPad->Modified(kTRUE);
}



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