hep
hep copied to clipboard
rootio: implement fast BulkIO
It would be great to implement fast BulkIO access for rootio.
this can be done in a few lines in python:
- https://github.com/scikit-hep/uproot
with quite the performances boost:
- https://github.com/scikit-hep/uproot#performance
The first comparison is time spent opening the file and loading the TTree. This is relevant if you are executing a procedure on a large set of files (TChain). uproot is about 16 times faster.
| Time to open file | |
|---|---|
| C++ ROOT | 0.50 sec |
| uproot | 0.03 sec |
Next is the time to read nearly all branches, exactly the same as the test on page 11 of Jakob's talk. uproot is about 5 times faster.
| Time to read file | Event rate | Data rate | |
|---|---|---|---|
| C++ ROOT | 4.62 sec | 1.9 MHz | 230 MB/sec |
| uproot | 0.93 sec | 9.2 MHz | 1160 MB/sec |
Finally, we load only one branch (replacing TTree::GetEntry with TBranch::GetEntry in C++ ROOT to avoid a performance penalty). uproot is about 4 times faster.
| Time to read 1 branch | Event rate | Data rate | |
|---|---|---|---|
| C++ ROOT | 0.256 sec | 33 MHz | 260 MB/sec |
| uproot | 0.064 sec | 133 MHz | 1020 MB/sec |
+1