xref: /aosp_15_r20/external/armnn/src/armnnUtils/HeapProfiling.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #ifdef ARMNN_HEAP_PROFILING_ENABLED
8 
9 #include <string>
10 #include <cstddef>
11 
12 // This is conditional so we can change the environment variable
13 // at build time.
14 #ifndef ARMNN_HEAP_PROFILE_DUMP_DIR
15 #define ARMNN_HEAP_PROFILE_DUMP_DIR "ARMNN_HEAP_PROFILE_DUMP_DIR"
16 #endif // ARMNN_HEAP_PROFILE_DUMP_DIR
17 
18 namespace armnnUtils
19 {
20 class ScopedHeapProfiler final
21 {
22 public:
23     ScopedHeapProfiler(const std::string & tag);
24     ~ScopedHeapProfiler();
25 
26 private:
27     // Location comes from the ARMNN_HEAP_PROFILE_DUMP_DIR.
28     // If it is not available then it dumps to /tmp.
29     std::string m_Location;
30     std::string m_Tag;
31 
32     // No default construction and copying.
33     ScopedHeapProfiler() = delete;
34     ScopedHeapProfiler(const ScopedHeapProfiler &) = delete;
35     ScopedHeapProfiler & operator=(const ScopedHeapProfiler &) = delete;
36 };
37 
38 } // namespace armnnUtils
39 
40 #define ARMNN_SCOPED_HEAP_PROFILING(TAG) \
41     armnnUtils::ScopedHeapProfiler __scoped_armnn_heap_profiler__(TAG)
42 
43 #else // ARMNN_HEAP_PROFILING_ENABLED
44 
45 #define ARMNN_SCOPED_HEAP_PROFILING(TAG)
46 
47 #endif // ARMNN_HEAP_PROFILING_ENABLED
48