-
- Downloads
An error occurred while retrieving diff files
Disk and Memory Space Gain
In ROOT older than v5.20/00, the branches' last basket, also known as the write basket, was always saved in the same "key" as the TTree object and was always present in memory when reading or writing. When reading this write basket was always present in memory even if the branch was never accessed. Starting in v5.20/00, TTree::Write closes out, compresses (when requested) and writes to disk in their own file record the write baskets of all the branches. (This is implemented via the new function TTree::FlushBaskets, TBranch::FlushBaskets, TBranch::FlushOneBaskets) TTree::AutoSave supports a new option "FlushBaskets" which will call FlushBaskets before saving the TTree object. Benefits - Flushing the write baskets has several advantages: - Reduce the file size of the TTree object (it not longer contains the last basket), improving read time of the TTree object - Reduce memory footprint of the TTree object. - In a TTree which "flushed" buffer, there is now usually only zero or one buffer in memory. - Previously each branch always had at least one basket in memory and usually 2 (the write basket and one read basket). - Now only the basket of the branches actually read are loaded in memory. - allow for the basket to be compressed and stored separated, increasing the compression factor. Note: Calling FlushBaskets too often (either directly of via AutoSave("FlushBaskets")) can lead to unnecessary fragmentation of the ROOT file, since it write the baskets to disk (and a new basket will be started at the next fill) whether or not the content was close to filling the basket or not. The fast tree cloning (TTreeCloner) was enhanced to support copying in-memory TTrees (that have been save as a single key on file). This issue was preventing hadd to fast clone files containing any 'in-memory' tree. git-svn-id: http://root.cern.ch/svn/root/trunk@24454 27541ba8-7e3a-0410-8455-c3a389f83636
Showing
- tree/doc/v520/index.html 32 additions, 1 deletiontree/doc/v520/index.html
- tree/tree/inc/TBranch.h 6 additions, 1 deletiontree/tree/inc/TBranch.h
- tree/tree/inc/TTree.h 3 additions, 0 deletionstree/tree/inc/TTree.h
- tree/tree/src/TBasket.cxx 2 additions, 2 deletionstree/tree/src/TBasket.cxx
- tree/tree/src/TBranch.cxx 127 additions, 59 deletionstree/tree/src/TBranch.cxx
- tree/tree/src/TBranchClones.cxx 0 additions, 3 deletionstree/tree/src/TBranchClones.cxx
- tree/tree/src/TBranchElement.cxx 2 additions, 13 deletionstree/tree/src/TBranchElement.cxx
- tree/tree/src/TBranchObject.cxx 0 additions, 5 deletionstree/tree/src/TBranchObject.cxx
- tree/tree/src/TBranchRef.cxx 0 additions, 3 deletionstree/tree/src/TBranchRef.cxx
- tree/tree/src/TBranchSTL.cxx 0 additions, 10 deletionstree/tree/src/TBranchSTL.cxx
- tree/tree/src/TTree.cxx 54 additions, 0 deletionstree/tree/src/TTree.cxx
- tree/tree/src/TTreeCloner.cxx 23 additions, 40 deletionstree/tree/src/TTreeCloner.cxx
Loading
Please register or sign in to comment