[TDF] optimizations to the event loop #442
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In particular, all creations and deletions of
shared_ptrs have been removed from the event loop.This is a long due optimization that required several changes in the internal behaviour of TDataFrame{Impl,Action,Branch,Filter}. Unfortunately all changes are entangled, so the third commit is quite fat.
The main change to the internal logic is that
TDataFrame{Action,Branch,Filter}now store a tuple ofTDataFrameValues rather than (possibly null) shared pointers toTTreeReaderValueBase.TDataFrameValueoffers a transparent, unified interface to the different kinds of values that the nodes must handle: temporary columns, to be evaluated on-the-fly,TTreeReaderArrays that must be converted toarray_views andTTreeReaderValues.TDataFrameValuealso incorporates validity checks on the value types, e.g. that arrays read viaTTreeReaderArrayare actually contiguous in memory and that the type of a temporary column is the same as the type expected by the node that makes use of it.