xref: /aosp_15_r20/external/armnn/src/armnnUtils/HeapProfiling.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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)16 ScopedHeapProfiler::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()31 ScopedHeapProfiler::~ScopedHeapProfiler()
32 {
33     HeapProfilerDump(m_Tag.c_str());
34 }
35 
36 } // namespace armnnUtils
37 
38 #endif // ARMNN_HEAP_PROFILING_ENABLED
39