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 WorkerScopedHeapProfiler::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 WorkerScopedHeapProfiler::~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