Speed up and clean up HiveDataBrokerSvc, AlgorithmMgr and ToolSvc
I noticed that with a realistic LHCb HLT2 configuration a lot of the time in initialize is spent in HiveDataBroker
(called by HLTControlFlowMgr
). This is explained by the ~50k algorithms and sub-optimal scaling in answering algorithmsRequiredFor queries (and the query pattern of HLTControlFlowMgr
and our control flow tree). With the changes below, initialization becomes a few hundred seconds faster and the time spent in HiveDataBroker
is no longer significant.
- Cleanups
- Remove possibility to late-initialize algs (remove
m_cfnodes
). - Do not check for type when a TypeNameString request has no explicit type.
- Remove possibility to late-initialize algs (remove
- Speedups (overall 315s->75s in the initialization time for LHCb's HLT2)
- Implement requests using DFS topological sorting which has a linear complexity scaling with the size of the result.
- Store AlgEntry-s in a map with their name as key. Spares a linear lookup in
algorithmsRequiredFor
. - Store tools in
ToolSvc
in a map for faster lookup by name. - Store algorithm SmartIFs in
AlgorithmManager
in a map for faster lookup by name.
Edited by Rosen Matev