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