I am very happy to announce the release of
You can easily download standalone binaries (i.e. you don’t need Go installed on your machine) for selected platform+OS combinations from https://go-hep.org/dist (e.g. choosing the latest version).
This release has seen quite a few performance improvements in the reading ROOT data area.
groot can now read data faster than ROOT in the few tests I was able to construct and assemble:
name time/op ReadCMS/GoHEP/Zlib-8 19.2s ± 1% ReadCMS/ROOT-TreeBranch/Zlib-8 37.5s ± 1% ReadCMS/ROOT-TreeReader/Zlib-8 26.1s ± 3% ReadCMS/ROOT-TreeReaderMT/Zlib-8 25.6s ± 5% (ROOT::EnableImplicitMT()) ReadScalar/GoHEP/None-8 737ms ± 3% ReadScalar/GoHEP/LZ4-8 769ms ± 3% ReadScalar/GoHEP/Zlib-8 1.33s ± 1% ReadScalar/ROOT-TreeBranch/None-8 1.22s ± 3% ReadScalar/ROOT-TreeBranch/LZ4-8 1.35s ± 3% ReadScalar/ROOT-TreeBranch/Zlib-8 2.47s ± 1% ReadScalar/ROOT-TreeReader/None-8 1.43s ± 5% ReadScalar/ROOT-TreeReader/LZ4-8 1.57s ± 2% ReadScalar/ROOT-TreeReader/Zlib-8 2.69s ± 1%
The release announcement has some more details about it, but here is the repo that has all the nitty-gritty details:
Happy to get any feedback about ways to improve these benchmarks.
(I tried to be fair (using options I knew about in ROOT) but also tried to use relatively common defaults for ROOT, as a “normal” user would)
and I also released
root-split, a command that splits ROOT Trees into multiple files+tree:
finally, for the eye candy, a new
HStack plotter has been implemented: