From 978497adfa975cd15cde2908ee16e78d5592a404 Mon Sep 17 00:00:00 2001 From: Tomasz Bold <tomasz.bold@gmail.com> Date: Wed, 29 Aug 2018 15:40:52 +0200 Subject: [PATCH] Add new class that represent a time stamp Fixing issues from review by @fwinkl Further review fixes Former-commit-id: 09eeaa92f6ac97e5cb6ee4fa1ee4017aa9ad9099 --- .../TrigTimeAlgs/TrigTimeAlgs/TrigTimeStamp.h | 47 +++++++++++++++++++ .../TrigTimeAlgs/src/TrigTimeStamp.cxx | 9 ++++ 2 files changed, 56 insertions(+) create mode 100644 Trigger/TrigTools/TrigTimeAlgs/TrigTimeAlgs/TrigTimeStamp.h create mode 100644 Trigger/TrigTools/TrigTimeAlgs/src/TrigTimeStamp.cxx diff --git a/Trigger/TrigTools/TrigTimeAlgs/TrigTimeAlgs/TrigTimeStamp.h b/Trigger/TrigTools/TrigTimeAlgs/TrigTimeAlgs/TrigTimeStamp.h new file mode 100644 index 000000000000..feba28a989e5 --- /dev/null +++ b/Trigger/TrigTools/TrigTimeAlgs/TrigTimeAlgs/TrigTimeStamp.h @@ -0,0 +1,47 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TrigTimeAlgs_TrigTimeStamp_h +#define TrigTimeAlgs_TrigTimeStamp_h + + +#include <chrono> +#include "SGTools/CLASS_DEF.h" +/** + * utility class to measure time duration in AthenaMT + * The pattern when it is useful: + * AlgA tags the beginning of the time period + *AlgA::execute() { + * timeStampHandle.record( std::move( std::make_unique<TrigTimeStamp>() ) ); } + * + * AlgB obtains the duration since the start tagged in AlgA: + * AlgB::execute() { + * double duration = timeStampHandle.cptr().milisecondsSince(); } + **/ +class TrigTimeStamp { +public: + typedef std::chrono::high_resolution_clock::time_point stamp_type; + + TrigTimeStamp() + : m_stamp( std::chrono::high_resolution_clock::now() ) {} + + /** + * time duration between now and when the time stamp was created + **/ + double millisecondsSince() const; + + /** + * Obtain the stamp value. + **/ + stamp_type get() const { return m_stamp; } +private: + stamp_type m_stamp; +}; + + + +CLASS_DEF( TrigTimeStamp , 262409323 , 1 ) + +#endif // TrigTimeAlgs_TrigTimeStamp_h + diff --git a/Trigger/TrigTools/TrigTimeAlgs/src/TrigTimeStamp.cxx b/Trigger/TrigTools/TrigTimeAlgs/src/TrigTimeStamp.cxx new file mode 100644 index 000000000000..0b571dcbf885 --- /dev/null +++ b/Trigger/TrigTools/TrigTimeAlgs/src/TrigTimeStamp.cxx @@ -0,0 +1,9 @@ +/* + Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TrigTimeAlgs/TrigTimeStamp.h" + +double TrigTimeStamp::millisecondsSince() const { + return std::chrono::duration_cast<std::chrono::microseconds>( std::chrono::high_resolution_clock::now() - m_stamp ).count(); +} -- GitLab