diff options
Diffstat (limited to 'src/armnnUtils/HeapProfiling.cpp')
-rw-r--r-- | src/armnnUtils/HeapProfiling.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/armnnUtils/HeapProfiling.cpp b/src/armnnUtils/HeapProfiling.cpp new file mode 100644 index 0000000000..7f99927511 --- /dev/null +++ b/src/armnnUtils/HeapProfiling.cpp @@ -0,0 +1,38 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// See LICENSE file in the project root for full license information. +// + +#ifdef ARMNN_HEAP_PROFILING_ENABLED + +#include "HeapProfiling.hpp" +#include "gperftools/heap-profiler.h" +#include <sstream> +#include <cstdlib> + +namespace armnnUtils +{ + +ScopedHeapProfiler::ScopedHeapProfiler(const std::string & tag) +: m_Location("/tmp") +, m_Tag(tag) +{ + char * locationFromEnv = ::getenv(ARMNN_HEAP_PROFILE_DUMP_DIR); + if (locationFromEnv) + { + m_Location = locationFromEnv; + } + std::stringstream ss; + ss << m_Location << "/" << m_Tag << ".hprof"; + HeapProfilerStart(ss.str().c_str()); + HeapProfilerDump(m_Tag.c_str()); +} + +ScopedHeapProfiler::~ScopedHeapProfiler() +{ + HeapProfilerDump(m_Tag.c_str()); +} + +} // namespace armnnUtils + +#endif // ARMNN_HEAP_PROFILING_ENABLED |