Skip to content

Implementation of a new set of counters

Sebastien Ponce requested to merge lhcb/Gaudi:sponce_newCounters into master

To be merged after !605 (closed) as it depends on it. So I keep it WIP for the moment although it's ready as !605 (closed) is WIP

The new counters have a few new features compared to existing StatEntity :

  • they are templated by the counted type
  • they come with different flavors counting only what you need (e.g. simple count, no stat)
  • more flavour can easily be created at will thanks to the AccumulatorSet object
  • they come with 2 implementations : thread safe or not
  • the thread safe ones use atomics and should be as efficient as possible
  • a Buffer object allows to easily buffer updates to a counter made in a tight loop, without paying the atomic price each time

A Small unit test is available in the test suite and example code is provided in the comments of Counters.h where they are implemented. Existing code has been adapted, in particular the ChronoSvc.

Last note : the pipeline is currently failing because of issues with the testing infrastructure itself. As long as it only complains with python file, it's all right, as this MR does not touch any.

Edited by Sebastien Ponce

Merge request reports