Re: delete time for complex geometries

From: Valery Fine (fine@bnl.gov)
Date: Sat Apr 01 2000 - 05:45:40 MEST


----- Original Message -----
From: <rhatcher@SLAC.stanford.edu>
To: <roottalk@pcroot.cern.ch>
Sent: 31 марта 2000 г. 21:19
Subject: Re: delete time for complex geometries


> > Hello Robert,
> > I did reproduce the time you reported and it seems to me my first guess ("garbage collection")
> > was a wrong one. The collection is not activated for TNode's.
> > I have no explanation yet.
> >
>
> I hacked in enough #includes, forward declaration and fixed up an what
> turns out to be an attempt to modify a constant string and got everything
> to compile using .L time_geom.C++.  This reduces the overhead where
> I'd expect it, but did nothing for the destruction time (as one would
> expect since the interpreted form simply has to find/call the TGeometry
> destructor).
>

 Hi, Robert

Can you try to imitate the TGeometry dtor and to estimate how many time each piece
consumes.
I can try myself tomorrow only.

 You will need:

 class TGeometry ... {
   THashList      *GetListOfShapes() const  {return fShapes;}
   TList              *GetListOfNodes()  const   {return fNodes;}
   THashList      *GetListOfMaterials() const {return fMaterials;}
   THashList      *GetListOfMatrices() const {return fMatrices;}
}


TGeometry::~TGeometry()
{ 
   if (!fMaterials) return;
   fMaterials->Delete();
   fMatrices->Delete();
   fShapes->Delete();
   fNodes->Delete();
   delete fMaterials;
   delete fMatrices;
   delete fShapes;
   delete fNodes;
   delete [] fMaterialPointer;
   delete [] fMatrixPointer;
   delete [] fShapePointer;
   fMaterials       = 0;
   fMatrices        = 0;
   fShapes          = 0;
   fNodes           = 0;
   fMaterialPointer = 0;
   fMatrixPointer   = 0;
   fShapePointer    = 0;
 
   if (gGeometry == this) {
      gGeometry = (TGeometry*) gROOT->GetListOfGeometries()->First();
      if (gGeometry == this)
         gGeometry = (TGeometry*) gROOT->GetListOfGeometries()->After(gGeometry);
   }
   gROOT->GetListOfGeometries()->Remove(this);
}



> -robert
>
> ==================================
>
>  build geometry  nplanes=48 nstrips=192
>                   cummulative time
>      basics       Real time 0:0:0, CP time 0.000
>      matrices     Real time 0:0:0, CP time 0.000
>      shapes       Real time 0:0:0, CP time 0.250
>      nodes        Real time 0:0:0, CP time 0.600
>
>  done building
>
>  shape list has 9266 entries
>
>  world node has 51 sub-nodes
>
>  destroy geometry Real time 0:0:15, CP time 14.910
>  done destruction
>
> root [2] time_geom(484,0);
>
>  build geometry  nplanes=484 nstrips=192
>                   cummulative time
>      basics       Real time 0:0:0, CP time 0.010
>      matrices     Real time 0:0:0, CP time 0.010
>      shapes       Real time 0:0:3, CP time 3.110
>      nodes        Real time 0:0:6, CP time 6.440
>



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:22 MET