Resolve performance regression described in ATLIDTRKCP-301
This merge request should resolve the CPU performance regression described in ATLIDTRKCP-301. The way this merge request works is two-fold. Firstly, it removes some unnecessary charge caching behaviour which can be replaced by using the late binding mechanisms in the charge
method. Secondly, it replaces the uses of CachedValue
by mutable variables with locks to guard them.
In my testing, the physics output is identical to that of the 2020-10-31T2101
nightly. The CPU performance results are given in the following table, and in my testing the performance of this MR is within measurement error of the performance before !37717 (merged). This means the performance is also better than in !37806 (closed).
PMonSD n cpu max@evt vmem max@evt malloc max@evt component
MASTER PMonSD [evt] 24 602 1680@22 470 11272@1 4531 11318@22 InDetSiSpTrackFinder
REVERT PMonSD [evt] 24 552 1500@22 470 11268@1 4531 11318@22 InDetSiSpTrackFinder
37806 PMonSD [evt] 24 575 1710@22 470 11268@1 4531 11318@22 InDetSiSpTrackFinder
THIS PMonSD [evt] 24 557 1550@22 470 11268@1 4531 11318@22 InDetSiSpTrackFinder
Tagging @goblirsc, @sroe, @christos. Christos, can you please confirm that this is acceptable? There are mutable variables here but they are all guarded by a mutex lock, and so the checker is not silenced without good reason.