Skip to content

More ReaderprotobufIO speed ups

This MR is an extension of !313 (merged) but it is separated because it requires code added to the core repo. To remove another needless copy during reading, I have added method declarations to GenEvent, GenParticle and GenVertex that read directly from the protobuf message objects.

This is organised similarly to how the rootIO adds its streamer classes with the declarations in the corresponding core class hidden behind ifdefs and the implementations in the protobufIO module subfolder.

This offers another decent reading speed up, as shown below in the ZeroCopy Streams + Custom Constructors.

I expect this MR to be a slightly harder sell, but it is a significant speed up in read speed and probably an even greater fractional speed up in workflows that don't use disk IO (communicating between generator and analysis via a named pipe for example). Can investigate if there is interest.

  • CENTOS7 test failing because no std::make_unique in gcc 4.8. I can fix this, but tomorrow.

Merge request reports