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