RE: [ROOT] TArrayI::Reset() implementation change

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Tue Apr 06 2004 - 03:07:23 MEST


I've put back the Reset version with the explicit loop and the expected
behaviour.

-- Fons.



On Fri, 2004-04-02 at 17:30, Philippe Canal wrote:
> Hi Pete,
> 
> I don't think that this is intentional.
> The change was made (incorrectly!) to improve speed without changing
> behavior.
> 
> Do you know of a better solution (than returning to the loop)?
> 
> Cheers,
> Philippe.
> 
> 
> 
> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
> [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Peter Elmer
> Sent: Friday, April 02, 2004 6:07 AM
> To: roottalk@pcroot.cern.ch
> Subject: [ROOT] TArrayI::Reset() implementation change
> 
> 
>   Hi Rene,
> 
>   I see that between ROOT 3.10-01 and 3.10-02, the following change was made
> to TArrayI::Reset(...):
> 
> < // @(#)root/cont:$Name:  $:$Id: TArrayI.h,v 1.14 2002/10/30 20:39:50 brun
> Exp $
> ---
> > // @(#)root/cont:$Name:  $:$Id: TArrayI.h,v 1.16 2003/11/14 11:17:13 brun
> Exp $
> 44c44
> <    void         Copy(TArrayI &array) const {array.Set(fN); for (Int_t
> i=0;i<fN;i++) array.fArray[i] = fArray[i];}
> ---
> >    void         Copy(TArrayI &array) const {array.Set(fN,fArray);}
> 48,49c48
> <    void         Reset()           {memset(fArray, 0, fN*sizeof(Int_t));}
> <    void         Reset(Int_t val)  {for (Int_t i=0;i<fN;i++) fArray[i] =
> val;}
> ---
> >    void         Reset(Int_t val=0)  {memset(fArray,val,
> fN*sizeof(Int_t));}
> 
>   For values of val other than 0, I think this actually changes the
> implementation since memset (IIRC) fills the array >byte-by-byte< with
> the value "val" (and not array-index by array-index). Was that change
> intentional? (We were relying on the original implementation in some of our
> code.)
> 
>                                  thanks,
>                                    Pete
> 
> -------------------------------------------------------------------------
> Peter Elmer     E-mail: Peter.Elmer@cern.ch      Phone: +41 (22) 767-4644
> Address: CERN Division PPE, Bat. 32 2C-14, CH-1211 Geneva 23, Switzerland
> -------------------------------------------------------------------------
> 
> 
> #################################################################
> #################################################################
> #################################################################
> #####
> #####
> #####
> #################################################################
> #################################################################
> #################################################################
> 
> #################################################################
> #################################################################
> #################################################################
> #####
> #####
> #####
> #################################################################
> #################################################################
> #################################################################
-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://www.rademakers.org/fons/      Fax:   +41 22 7679480



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET