| Index: webrtc/base/profiler.h
|
| diff --git a/webrtc/base/profiler.h b/webrtc/base/profiler.h
|
| deleted file mode 100644
|
| index 4dd35f5baca5abe007a0be4ed050315cc1318172..0000000000000000000000000000000000000000
|
| --- a/webrtc/base/profiler.h
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -/*
|
| - * Copyright 2013 The WebRTC Project Authors. All rights reserved.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license
|
| - * that can be found in the LICENSE file in the root of the source
|
| - * tree. An additional intellectual property rights grant can be found
|
| - * in the file PATENTS. All contributing project authors may
|
| - * be found in the AUTHORS file in the root of the source tree.
|
| - */
|
| -
|
| -// A simple wall-clock profiler for instrumented code.
|
| -// Example:
|
| -// void MyLongFunction() {
|
| -// PROFILE_F(); // Time the execution of this function.
|
| -// // Do something
|
| -// { // Time just what is in this scope.
|
| -// PROFILE("My event");
|
| -// // Do something else
|
| -// }
|
| -// }
|
| -// Another example:
|
| -// void StartAsyncProcess() {
|
| -// PROFILE_START("My async event");
|
| -// DoSomethingAsyncAndThenCall(&Callback);
|
| -// }
|
| -// void Callback() {
|
| -// PROFILE_STOP("My async event");
|
| -// // Handle callback.
|
| -// }
|
| -
|
| -#ifndef WEBRTC_BASE_PROFILER_H_
|
| -#define WEBRTC_BASE_PROFILER_H_
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -
|
| -#include "webrtc/base/basictypes.h"
|
| -#include "webrtc/base/common.h"
|
| -#include "webrtc/base/constructormagic.h"
|
| -#include "webrtc/base/logging.h"
|
| -#include "webrtc/base/sharedexclusivelock.h"
|
| -
|
| -// Profiling could be switched via a build flag, but for now, it's always on.
|
| -#ifndef ENABLE_PROFILING
|
| -#define ENABLE_PROFILING
|
| -#endif
|
| -
|
| -#ifdef ENABLE_PROFILING
|
| -
|
| -#define UV_HELPER2(x) _uv_ ## x
|
| -#define UV_HELPER(x) UV_HELPER2(x)
|
| -#define UNIQUE_VAR UV_HELPER(__LINE__)
|
| -
|
| -// Profiles the current scope.
|
| -#define PROFILE(msg) rtc::ProfilerScope UNIQUE_VAR(msg)
|
| -// When placed at the start of a function, profiles the current function.
|
| -#define PROFILE_F() PROFILE(__FUNCTION__)
|
| -// Reports current timings to the log at severity |sev|.
|
| -#define PROFILE_DUMP_ALL(sev) \
|
| - rtc::Profiler::Instance()->ReportAllToLog(__FILE__, __LINE__, sev)
|
| -// Reports current timings for all events whose names are prefixed by |prefix|
|
| -// to the log at severity |sev|. Using a unique event name as |prefix| will
|
| -// report only that event.
|
| -#define PROFILE_DUMP(sev, prefix) \
|
| - rtc::Profiler::Instance()->ReportToLog(__FILE__, __LINE__, sev, prefix)
|
| -// Starts and stops a profile event. Useful when an event is not easily
|
| -// captured within a scope (eg, an async call with a callback when done).
|
| -#define PROFILE_START(msg) rtc::Profiler::Instance()->StartEvent(msg)
|
| -#define PROFILE_STOP(msg) rtc::Profiler::Instance()->StopEvent(msg)
|
| -// TODO(ryanpetrie): Consider adding PROFILE_DUMP_EVERY(sev, iterations)
|
| -
|
| -#undef UV_HELPER2
|
| -#undef UV_HELPER
|
| -#undef UNIQUE_VAR
|
| -
|
| -#else // ENABLE_PROFILING
|
| -
|
| -#define PROFILE(msg) (void)0
|
| -#define PROFILE_F() (void)0
|
| -#define PROFILE_DUMP_ALL(sev) (void)0
|
| -#define PROFILE_DUMP(sev, prefix) (void)0
|
| -#define PROFILE_START(msg) (void)0
|
| -#define PROFILE_STOP(msg) (void)0
|
| -
|
| -#endif // ENABLE_PROFILING
|
| -
|
| -namespace rtc {
|
| -
|
| -// Tracks information for one profiler event.
|
| -class ProfilerEvent {
|
| - public:
|
| - ProfilerEvent();
|
| - void Start();
|
| - void Stop();
|
| - void Stop(uint64_t stop_time);
|
| - double standard_deviation() const;
|
| - double total_time() const { return total_time_; }
|
| - double mean() const { return mean_; }
|
| - double minimum() const { return minimum_; }
|
| - double maximum() const { return maximum_; }
|
| - int event_count() const { return event_count_; }
|
| - bool is_started() const { return start_count_ > 0; }
|
| -
|
| - private:
|
| - uint64_t current_start_time_;
|
| - double total_time_;
|
| - double mean_;
|
| - double sum_of_squared_differences_;
|
| - double minimum_;
|
| - double maximum_;
|
| - int start_count_;
|
| - int event_count_;
|
| -};
|
| -
|
| -// Singleton that owns ProfilerEvents and reports results. Prefer to use
|
| -// macros, defined above, rather than directly calling Profiler methods.
|
| -class Profiler {
|
| - public:
|
| - ~Profiler();
|
| - void StartEvent(const std::string& event_name);
|
| - void StopEvent(const std::string& event_name);
|
| - void ReportToLog(const char* file, int line, LoggingSeverity severity_to_use,
|
| - const std::string& event_prefix);
|
| - void ReportAllToLog(const char* file, int line,
|
| - LoggingSeverity severity_to_use);
|
| - const ProfilerEvent* GetEvent(const std::string& event_name) const;
|
| - // Clears all _stopped_ events. Returns true if _all_ events were cleared.
|
| - bool Clear();
|
| -
|
| - static Profiler* Instance();
|
| - private:
|
| - Profiler();
|
| -
|
| - typedef std::map<std::string, ProfilerEvent> EventMap;
|
| - EventMap events_;
|
| - mutable SharedExclusiveLock lock_;
|
| -
|
| - RTC_DISALLOW_COPY_AND_ASSIGN(Profiler);
|
| -};
|
| -
|
| -// Starts an event on construction and stops it on destruction.
|
| -// Used by PROFILE macro.
|
| -class ProfilerScope {
|
| - public:
|
| - explicit ProfilerScope(const std::string& event_name)
|
| - : event_name_(event_name) {
|
| - Profiler::Instance()->StartEvent(event_name_);
|
| - }
|
| - ~ProfilerScope() {
|
| - Profiler::Instance()->StopEvent(event_name_);
|
| - }
|
| - private:
|
| - std::string event_name_;
|
| -
|
| - RTC_DISALLOW_COPY_AND_ASSIGN(ProfilerScope);
|
| -};
|
| -
|
| -std::ostream& operator<<(std::ostream& stream,
|
| - const ProfilerEvent& profiler_event);
|
| -
|
| -} // namespace rtc
|
| -
|
| -#endif // WEBRTC_BASE_PROFILER_H_
|
|
|