Hi, I am trying to improve I/O in my package and I have a number of questions about TTree performance. I store objects of THistoricalData class (see below) in a tree. One of THistoricalData fields is of TDate class (see below). TDate holds number of days from day zero, fNDays, which is UInt_t. Before it was ULong_t and it cused warning in the split mode (see Eddy Offerman mail/Rene reply). Now I have changed it to UInt_t but I still get a warning: Loading data for COMPX (Nasdaq Combined Composite Index) Warning in <TTree::Branch>: Cannot process member:fDate 1. Could you please explain this. 2. If I use non-split mode and set file compression level to 0, I see that the file is filled up with "THistoricalData" strings, I suppose for every entry in the tree. This makes 5 MB file out of ~800KB binary data I am loading into the tree. Do you really write class label for every entry, not only for the branch??? PS. in the split mode I get 12Mb !!!! file out of the same 800KB but this I would not blame before I clarify my question about warning message for fNDays field. Regards, Anton class THistoricalData : public TObject { public: enum EDataOption { kOK, kNotAvailable, kInterpolated }; protected: TDate fDate; // Date Float_t fBid; // Bid Float_t fAsk; // Ask Float_t fHigh; // High Float_t fLow; // Low Float_t fClose; // Close UInt_t fVolume; // Volume Int_t fOption; // Option public: THistoricalData(); THistoricalData(TDate Date, Float_t Bid, Float_t Ask, UInt_t Volume, Int_t Option = kOK); THistoricalData(TDate Date, Float_t High, Float_t Low, Float_t Close, UInt_t Volume, Int_t Option = kOK); TDate GetDate() { return fDate; } Float_t GetBid() { return fBid; } Float_t GetAsk() { return fAsk; } Float_t GetHigh() { return fHigh; } Float_t GetLow() { return fLow; } Float_t GetClose() { return fClose; } UInt_t GetVolume() { return fVolume; } Int_t GetOption() { return fOption; } Float_t GetPrice(Int_t Option = TFinObject::kTypicalPrice); void Set(TDate Date, Float_t Bid, Float_t Ask, UInt_t Volume, Int_t Option = kOK); void Set(TDate Date, Float_t High, Float_t Low, Float_t Close, UInt_t Volume, Int_t Option = kOK); void SetDate(TDate Date) { fDate = Date; } void SetBid(Float_t Bid) { fBid = Bid; } void SetAsk(Float_t Ask) { fAsk = Ask; } void SetHigh(Float_t High) { fHigh = High; } void SetLow(Float_t Low) { fLow = Low; } void SetClose(Float_t Close) { fClose = Close; } void SetVolume(UInt_t Volume) { fVolume = Volume; } void SetOption(Int_t Option) { fOption = Option; } void Print(const char* Option = ""); ClassDef(THistoricalData, 100) // Daily historical data }; #endif class TDate : public TObject { public: TDate(); TDate(TMonth Month, Int_t Day, Int_t Year); TDate(Int_t DayOfYear, Int_t Year); TDate(const TDate &Date); TDate(UInt_t DayNumber); TDate(const char* Date, const char* Pattern = "yymmdd"); TDate(UInt_t Date, const char* Pattern); TDate(const struct tm *Date); TDate AddMonths(Int_t MonthNumber); TDate AddWeeks(Int_t WeekNumber); TDate AddYears(Int_t YearNumber); TDate BeginDST(); static TDate BeginDST(Int_t Year); Int_t Day(); UInt_t DayNumber(); TWeekDay DayOfWeek(); Int_t DayOfYear(); Int_t DaysInMonth(); static Int_t DaysInMonth(TMonth Month, Int_t Year); Int_t DaysInYear(); static Int_t DaysInYear(Int_t Year); TDate EndDST(); static TDate EndDST(Int_t Year); Bool_t IsDST(); static Bool_t IsDST(TDate &Date); Bool_t IsLeapYear(); static Bool_t IsLeapYear(Int_t year); Bool_t IsValid(); static Bool_t IsValid(TMonth Month, Int_t Day, Int_t Year); TMonth Month(); Bool_t operator!=(const TDate &Date) const; TDate operator+(Int_t DayNumber) const; TDate operator+(long DayNumber) const; TDate operator++(); TDate operator++(int); TDate& operator+=(Int_t DayNumber); TDate& operator+=(long DayNumber); long operator-(const TDate &Date) const; TDate operator-(Int_t DayNumber) const; TDate operator-(long DayNumber) const; TDate operator--(); TDate operator--(int); TDate& operator-=(Int_t DayNumber); TDate& operator-=(long DayNumber); Bool_t operator<(const TDate &Date) const; Bool_t operator<=(const TDate &Date) const; TDate& operator=(const TDate &Date); Bool_t operator==(const TDate &Date) const; Bool_t operator>(const TDate &Date) const; Bool_t operator>=(const TDate &Date) const; // TDate& operator=(const UInt_t DayNumber); Bool_t operator==(const UInt_t DayNumber) const; Bool_t operator!=(const UInt_t DayNumber) const; // static void SetBeginDST(TMonth Month, TWeekDay WeekDay); // static void SetEndDST(TMonth Month, TWeekDay WeekDay); static TDate Today(); Int_t WeekOfMonth(); Int_t WeekOfYear(); Int_t WeeksInYear(); static Int_t WeeksInYear(Int_t Year); Int_t Year(); UInt_t Convert(); TString AsString(); void Print(const char* Option = ""); // Pope Gregor XIII's reform cancelled 10 days: // the day after Oct 4 1582 was Oct 15 1582 static const Int_t ReformYear; static const TMonth ReformMonth; static const UInt_t ReformDayNumber; protected: // Daylight Savings Time Month and Day of Week static TMonth BeginDSTMonth; static TWeekDay BeginDSTDay; static TMonth EndDSTMonth; static TWeekDay EndDSTDay; protected: TDate Set(TMonth Month, Int_t Day, Int_t Year); UInt_t MakeDayNumber(TDateEntry *DateEntry); TDateEntry* FromDayNumber(UInt_t DayNumber); private: UInt_t fDayNumber; ClassDef(TDate, 100) // Date manipulation };
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:34 MET