diff options
author | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2019-11-15 17:38:44 +0000 |
---|---|---|
committer | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2019-11-18 11:23:09 +0000 |
commit | dbdd1b438815606bd423cbcfb95d51a3dd206683 (patch) | |
tree | f9a268f503b1f33a5e7e150e1ae041532bd8b94f /src/profiling/ProfilingGuidGenerator.hpp | |
parent | aad2fe41ad5111ad4cde6dc91a794f5f8f8b16f9 (diff) | |
download | armnn-dbdd1b438815606bd423cbcfb95d51a3dd206683.tar.gz |
IVGCVSW-3980 Implementation of Guid generator
* Improve implementation of Guid Generator to separate the range of
Static Guid and Dynamic Guid
* Unit tests to ensure non-collision
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I4ad1a75ea0b1f37155da0decafb51fc5a61e4187
Diffstat (limited to 'src/profiling/ProfilingGuidGenerator.hpp')
-rw-r--r-- | src/profiling/ProfilingGuidGenerator.hpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/profiling/ProfilingGuidGenerator.hpp b/src/profiling/ProfilingGuidGenerator.hpp index ad3159f201..97de4a88e5 100644 --- a/src/profiling/ProfilingGuidGenerator.hpp +++ b/src/profiling/ProfilingGuidGenerator.hpp @@ -22,25 +22,28 @@ public: ProfilingGuidGenerator() : m_Sequence(0) {} /// Return the next random Guid in the sequence - // NOTE: dummy implementation for the moment inline ProfilingDynamicGuid NextGuid() override { - // NOTE: skipping the zero for testing purposes - ProfilingDynamicGuid guid(++m_Sequence); + ProfilingDynamicGuid guid(m_Sequence); + m_Sequence++; + if (m_Sequence >= MIN_STATIC_GUID) + { + // Reset the sequence to 0 when it reaches the upper bound of dynamic guid + m_Sequence = 0; + } return guid; } /// Create a ProfilingStaticGuid based on a hash of the string - // NOTE: dummy implementation for the moment inline ProfilingStaticGuid GenerateStaticId(const std::string& str) override { - uint64_t guid = static_cast<uint64_t>(m_StringHasher(str)); - return guid; + uint64_t staticHash = m_Hash(str) | MIN_STATIC_GUID; + return ProfilingStaticGuid(staticHash); } private: - std::hash<std::string> m_StringHasher; uint64_t m_Sequence; + std::hash<std::string> m_Hash; }; } // namespace profiling |