Re: [ROOT] How to accelerate root output?

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Nov 01 2001 - 11:33:36 MET


Christian,

By optimizing the class layout, I mean the following:
Suppose a class like
  class MyClass {
     Int_t      fI1;
     Double_t   fD1;
     Short_t    fS1;
     Bool_t     fB1;
     Double_t   fD2;
     Int_t      fI2;
     Someclass  *fSomec;
     Int_t      fI3; etc

This class has a bad layout for two reasons.
  - in memory, an instance will occupy more space than you think. All compilers
    have to align the member boundaries such that, eg fD2 starts at an 8byte
    boundary.
  - the I/O loops on all the cases with a penalyzing if for each case.

If instead you do
   class MyClass {
      Double_t   fD1;
      Double_t   fD2;
      Int_t      fI1;
      Int_t      fI2;
      Int_t      fI3;
      Short_t    fS1;
      Bool_t     fB1;
      Someclass  *fsomec;

The Root I/O optimizer in TStreamerInfo::Compile will be able to process fD1
and FD2 in one go, fI1,fI2,fI3 in one go, etc

Rene Brun


     Christian Holm Christensen wrote:
> 
> Hi Rene et al,
> 
> On Thu, 01 Nov 2001 07:29:50 +0000
> Rene Brun <Rene.Brun@cern.ch> wrote
> concerning "Re: [ROOT] How to accelerate root output?":
> > Hi Victor,
> >
> > The new system may even be faster than the old one if you have a
> > good class layout. I see so many cases where people mix ints with
> > floats, doubles, etc !
> 
> Could you be a bit more specific? What do you mean by "good class
> layout"? And how does "mix ints with floats, doubles, etc" penalise
> you in terms of performance?   Does this have anything to do with the
> TClonesArray::BypassStreamer flag?  Perhaps a few lines in the Users
> Guide would be a good thing (I didn't actually check, but I can't
> remember from past reading seeing anything on this - apologies if it's
> already there).
> 
> Am I to understand, that ones
> classes should preferably have only one kind of (simple) members
> (float, double, XOR, int)?  If so, isn't it a bit archaic, in the
> sense that it's something you'd do in Fortran77+ZEBRA?  Thanks.
> 
> Yours,
> 
> Christian Holm Christensen -------------------------------------------
> Address: Sankt Hansgade 23, 1. th.           Phone:  (+45) 35 35 96 91
>          DK-2200 Copenhagen N                Cell:   (+45) 28 82 16 23
>          Denmark                             Office: (+45) 353  25 305
> Email:   cholm@nbi.dk                        Web:    www.nbi.dk/~cholm



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