ArmNN
 21.11
HeapProfiling.cpp
Go to the documentation of this file.
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 
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 
31 ScopedHeapProfiler::~ScopedHeapProfiler()
32 {
33  HeapProfilerDump(m_Tag.c_str());
34 }
35 
36 } // namespace armnnUtils
37 
38 #endif // ARMNN_HEAP_PROFILING_ENABLED