1 // 2 // Copyright © 2017 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #ifdef ARMNN_HEAP_PROFILING_ENABLED 7 8 #include "HeapProfiling.hpp" 9 #include "gperftools/heap-profiler.h" 10 #include <sstream> 11 #include <cstdlib> 12 13 namespace armnnUtils 14 { 15 ScopedHeapProfiler(const std::string & tag)16ScopedHeapProfiler::ScopedHeapProfiler(const std::string & tag) 17 : m_Location("/tmp") 18 , m_Tag(tag) 19 { 20 char * locationFromEnv = ::getenv(ARMNN_HEAP_PROFILE_DUMP_DIR); 21 if (locationFromEnv) 22 { 23 m_Location = locationFromEnv; 24 } 25 std::stringstream ss; 26 ss << m_Location << "/" << m_Tag << ".hprof"; 27 HeapProfilerStart(ss.str().c_str()); 28 HeapProfilerDump(m_Tag.c_str()); 29 } 30 ~ScopedHeapProfiler()31ScopedHeapProfiler::~ScopedHeapProfiler() 32 { 33 HeapProfilerDump(m_Tag.c_str()); 34 } 35 36 } // namespace armnnUtils 37 38 #endif // ARMNN_HEAP_PROFILING_ENABLED 39