Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(650)

Unified Diff: webrtc/base/profiler.h

Issue 2374033002: Delete profiler.h. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/base/base.gyp ('k') | webrtc/base/profiler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « webrtc/base/base.gyp ('k') | webrtc/base/profiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698