Hello, I have a program that writes a "large" TTree - 7 branches: 6 hold a float, the 7th a short, with about 20E6 entries. This TTree holds data that I spin through multiple time to obtain calibration factors. The current directory is NOT writable - e.g. gFile->IsWritable() returns 0. This forces the TTree to remain memory resident saving me the I/O overhead on subsequent spins through the data. I have 1 GB of ram - more than enough to hold the entire TTree. My question is: Is it possible to pre-allocate the memory required for this TTree? What happens is that my program page faults about 800 times/second, each time increasing the memory used by my program by about 3 MB - eventually gets about 540 MB - its very slow! subsequent spins through the tree, however are much quicker then what it would take if TTree is on disk. I am using the Win32 version of root version 3.05/3 on Win2K. I compiled my program using VC++ 6.0 One other thing: TTree::Print() causes: Fatal in <TStorage::ReAllocChar>: storage exhausted aborting Warning in <TWinNTSystem::StackTrace>: this method must be overridden! abnormal program termination I can see that my program tries to allocate too much memory - the peak is about 850MB - why should TTree::Print() allocate memory? Thanks, Ed Oltman
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET