From 33199c25e5af1553e474a6f6eede07e888cd45ee Mon Sep 17 00:00:00 2001 From: Francis Murtagh Date: Mon, 15 Feb 2021 10:11:28 +0000 Subject: IVGCVSW-5675 Implement Pimpl Idiom for IProfiler (lower priority) Signed-off-by: Francis Murtagh Change-Id: If716f5f4e9b5433586b8a939d326830482da2f74 --- include/armnn/IProfiler.hpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'include/armnn') diff --git a/include/armnn/IProfiler.hpp b/include/armnn/IProfiler.hpp index 5e6f5087ca..ac422b714f 100644 --- a/include/armnn/IProfiler.hpp +++ b/include/armnn/IProfiler.hpp @@ -6,33 +6,50 @@ #pragma once #include +#include +#include namespace armnn { +class ProfilerImpl; +class BackendId; +class Instrument; +class Event; class IProfiler { public: /// Enables/disables profiling for this profiler. /// @param [in] enableProfiling A flag that indicates whether profiling should be enabled or not. - virtual void EnableProfiling(bool enableProfiling) = 0; + void EnableProfiling(bool enableProfiling); /// Checks whether profiling is enabled. /// Profiling is disabled by default. /// @return true if profiling is enabled, false otherwise. - virtual bool IsProfilingEnabled() = 0; + bool IsProfilingEnabled(); /// Analyzes the tracked events and writes the results to the given output stream. /// Please refer to the configuration variables in Profiling.cpp to customize the information written. /// @param [out] outStream The stream where to write the profiling results to. - virtual void AnalyzeEventsAndWriteResults(std::ostream& outStream) const = 0; + void AnalyzeEventsAndWriteResults(std::ostream& outStream) const; /// Print stats for events in JSON Format to the given output stream. /// @param [out] outStream The stream where to write the profiling results to. - virtual void Print(std::ostream& outStream) const = 0; + void Print(std::ostream& outStream) const; -protected: - ~IProfiler() {} + ~IProfiler(); + IProfiler(); + +private: + using InstrumentPtr = std::unique_ptr; + Event* BeginEvent(const BackendId& backendId, + const std::string& label, + std::vector&& instruments); + std::unique_ptr pProfilerImpl; + friend class ScopedProfilingEvent; + + // Friend functions for unit testing, see ProfilerTests.cpp. + friend size_t GetProfilerEventSequenceSize(armnn::IProfiler* profiler); }; } // namespace armnn -- cgit v1.2.1