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 #pragma once 6*89c4ff92SAndroid Build Coastguard Worker 7*89c4ff92SAndroid Build Coastguard Worker #ifdef ARMNN_HEAP_PROFILING_ENABLED 8*89c4ff92SAndroid Build Coastguard Worker 9*89c4ff92SAndroid Build Coastguard Worker #include <string> 10*89c4ff92SAndroid Build Coastguard Worker #include <cstddef> 11*89c4ff92SAndroid Build Coastguard Worker 12*89c4ff92SAndroid Build Coastguard Worker // This is conditional so we can change the environment variable 13*89c4ff92SAndroid Build Coastguard Worker // at build time. 14*89c4ff92SAndroid Build Coastguard Worker #ifndef ARMNN_HEAP_PROFILE_DUMP_DIR 15*89c4ff92SAndroid Build Coastguard Worker #define ARMNN_HEAP_PROFILE_DUMP_DIR "ARMNN_HEAP_PROFILE_DUMP_DIR" 16*89c4ff92SAndroid Build Coastguard Worker #endif // ARMNN_HEAP_PROFILE_DUMP_DIR 17*89c4ff92SAndroid Build Coastguard Worker 18*89c4ff92SAndroid Build Coastguard Worker namespace armnnUtils 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker class ScopedHeapProfiler final 21*89c4ff92SAndroid Build Coastguard Worker { 22*89c4ff92SAndroid Build Coastguard Worker public: 23*89c4ff92SAndroid Build Coastguard Worker ScopedHeapProfiler(const std::string & tag); 24*89c4ff92SAndroid Build Coastguard Worker ~ScopedHeapProfiler(); 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Worker private: 27*89c4ff92SAndroid Build Coastguard Worker // Location comes from the ARMNN_HEAP_PROFILE_DUMP_DIR. 28*89c4ff92SAndroid Build Coastguard Worker // If it is not available then it dumps to /tmp. 29*89c4ff92SAndroid Build Coastguard Worker std::string m_Location; 30*89c4ff92SAndroid Build Coastguard Worker std::string m_Tag; 31*89c4ff92SAndroid Build Coastguard Worker 32*89c4ff92SAndroid Build Coastguard Worker // No default construction and copying. 33*89c4ff92SAndroid Build Coastguard Worker ScopedHeapProfiler() = delete; 34*89c4ff92SAndroid Build Coastguard Worker ScopedHeapProfiler(const ScopedHeapProfiler &) = delete; 35*89c4ff92SAndroid Build Coastguard Worker ScopedHeapProfiler & operator=(const ScopedHeapProfiler &) = delete; 36*89c4ff92SAndroid Build Coastguard Worker }; 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker } // namespace armnnUtils 39*89c4ff92SAndroid Build Coastguard Worker 40*89c4ff92SAndroid Build Coastguard Worker #define ARMNN_SCOPED_HEAP_PROFILING(TAG) \ 41*89c4ff92SAndroid Build Coastguard Worker armnnUtils::ScopedHeapProfiler __scoped_armnn_heap_profiler__(TAG) 42*89c4ff92SAndroid Build Coastguard Worker 43*89c4ff92SAndroid Build Coastguard Worker #else // ARMNN_HEAP_PROFILING_ENABLED 44*89c4ff92SAndroid Build Coastguard Worker 45*89c4ff92SAndroid Build Coastguard Worker #define ARMNN_SCOPED_HEAP_PROFILING(TAG) 46*89c4ff92SAndroid Build Coastguard Worker 47*89c4ff92SAndroid Build Coastguard Worker #endif // ARMNN_HEAP_PROFILING_ENABLED 48