Project import generated by Copybara.
PiperOrigin-RevId: 253489161
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
// Copyright 2019 The MediaPipe Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MEDIAPIPE_FRAMEWORK_PLATFORM_SPECIFIC_PROFILING_H_
|
||||
#define MEDIAPIPE_FRAMEWORK_PLATFORM_SPECIFIC_PROFILING_H_
|
||||
|
||||
#ifdef MEDIAPIPE_PROFILER_AVAILABLE
|
||||
#include "mediapipe/framework/profiler/graph_profiler.h"
|
||||
#else
|
||||
#include "mediapipe/framework/profiler/graph_profiler_stub.h"
|
||||
#endif
|
||||
|
||||
// Enabling this flag, will require specific platform implementation for the
|
||||
// methods mediapipe::PlatformSpecificTraceEventBegin() and
|
||||
// mediapipe::PlatformSpecificTraceEventEnd().
|
||||
#ifdef ENABLE_PLATFORM_SPECIFIC_PROFILING
|
||||
namespace mediapipe {
|
||||
|
||||
const char kProfilingCategory[] = "Calculators";
|
||||
|
||||
void PlatformSpecificTraceEventBegin(const char* name, int64 id,
|
||||
const char* category_group,
|
||||
int64 packet_timestamp);
|
||||
void PlatformSpecificTraceEventEnd(const char* name, int64 id,
|
||||
const char* category_group,
|
||||
int64 packet_timestamp);
|
||||
|
||||
// Temporary object to profile entry and exit of events.
|
||||
class PlatformSpecificProfilingScope {
|
||||
public:
|
||||
PlatformSpecificProfilingScope(const char* name, int64 id,
|
||||
int64 packet_timestamp)
|
||||
: method_name_(TraceEvent::UNKNOWN),
|
||||
name_(name),
|
||||
id_(id),
|
||||
packet_timestamp_(packet_timestamp) {
|
||||
PlatformSpecificTraceEventBegin(name_, id_, kProfilingCategory,
|
||||
packet_timestamp_);
|
||||
}
|
||||
|
||||
// Scope constructor that only starts profiling for Process method.
|
||||
// Useful to limit automated profiling to only Process().
|
||||
PlatformSpecificProfilingScope(const char* name, int64 id,
|
||||
int64 packet_timestamp,
|
||||
TraceEvent::EventType method_name)
|
||||
: method_name_(method_name),
|
||||
name_(name),
|
||||
id_(id),
|
||||
packet_timestamp_(packet_timestamp) {
|
||||
if (method_name_ == TraceEvent::PROCESS) {
|
||||
PlatformSpecificTraceEventBegin(name_, id_, kProfilingCategory,
|
||||
packet_timestamp_);
|
||||
}
|
||||
}
|
||||
|
||||
~PlatformSpecificProfilingScope() {
|
||||
if (method_name_ == TraceEvent::PROCESS ||
|
||||
method_name_ == TraceEvent::UNKNOWN) {
|
||||
PlatformSpecificTraceEventEnd(name_, id_, kProfilingCategory,
|
||||
packet_timestamp_);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
TraceEvent::EventType method_name_;
|
||||
const char* name_;
|
||||
int64 id_;
|
||||
int64 packet_timestamp_;
|
||||
};
|
||||
} // namespace mediapipe
|
||||
|
||||
// General profiling macro.
|
||||
#define PLATFORM_SPECIFIC_PROFILER(name, id, packet_timestamp) \
|
||||
::mediapipe::PlatformSpecificProfilingScope platform_specific_scope( \
|
||||
name, id, packet_timestamp);
|
||||
|
||||
// Automated profiling macro.
|
||||
// Filters out all methods except Calculator::Process().
|
||||
#define PLATFORM_SPECIFIC_PROCESS_PROFILER(name, id, method_name, \
|
||||
packet_timestamp) \
|
||||
::mediapipe::PlatformSpecificProfilingScope platform_specific_scope( \
|
||||
name, id, packet_timestamp, ::mediapipe::TraceEvent::method_name);
|
||||
|
||||
#else
|
||||
#define PLATFORM_SPECIFIC_PROFILER(name, id, packet_timestamp)
|
||||
#define PLATFORM_SPECIFIC_PROCESS_PROFILER(name, id, method_name, \
|
||||
packet_timestamp)
|
||||
#endif // ENABLE_PLATFORM_SPECIFIC_PROFILING
|
||||
|
||||
#endif // MEDIAPIPE_FRAMEWORK_PLATFORM_SPECIFIC_PROFILING_H_
|
||||
Reference in New Issue
Block a user