summaryrefslogtreecommitdiffstats
path: root/base/debug/profiler.cc
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-01 23:35:25 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-01 23:35:25 +0000
commit7664ab3d9d921bc769977c2921ecb4e5ea0cc793 (patch)
treeab884002c040253f951d05ef7b3e5033d35d1c99 /base/debug/profiler.cc
parent22258c851d500a42113c833ac06d244cf4d4236b (diff)
downloadchromium_src-7664ab3d9d921bc769977c2921ecb4e5ea0cc793.zip
chromium_src-7664ab3d9d921bc769977c2921ecb4e5ea0cc793.tar.gz
chromium_src-7664ab3d9d921bc769977c2921ecb4e5ea0cc793.tar.bz2
Added command line switches and UI (controlled via a build option)
to make it easier to use the sampling profiler. BUG=None TEST=None Review URL: http://codereview.chromium.org/6250070 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73374 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/debug/profiler.cc')
-rw-r--r--base/debug/profiler.cc65
1 files changed, 65 insertions, 0 deletions
diff --git a/base/debug/profiler.cc b/base/debug/profiler.cc
new file mode 100644
index 0000000..8597dac
--- /dev/null
+++ b/base/debug/profiler.cc
@@ -0,0 +1,65 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/debug/profiler.h"
+
+#include <string>
+
+#include "base/process_util.h"
+#include "base/string_util.h"
+
+#if defined(ENABLE_PROFILING) && !defined(NO_TCMALLOC)
+#include "third_party/tcmalloc/chromium/src/google/profiler.h"
+#endif
+
+namespace base {
+namespace debug {
+
+#if defined(ENABLE_PROFILING) && !defined(NO_TCMALLOC)
+
+static int profile_count = 0;
+
+void StartProfiling(const std::string& name) {
+ ++profile_count;
+ std::string full_name(name);
+ std::string pid = StringPrintf("%d", GetCurrentProcId());
+ std::string count = StringPrintf("%d", profile_count);
+ ReplaceSubstringsAfterOffset(&full_name, 0, "{pid}", pid);
+ ReplaceSubstringsAfterOffset(&full_name, 0, "{count}", count);
+ ProfilerStart(full_name.c_str());
+}
+
+void StopProfiling() {
+ ProfilerFlush();
+ ProfilerStop();
+}
+
+void FlushProfiling() {
+ ProfilerFlush();
+}
+
+bool BeingProfiled() {
+ return ProfilingIsEnabledForAllThreads();
+}
+
+#else
+
+void StartProfiling(const std::string& name) {
+}
+
+void StopProfiling() {
+}
+
+void FlushProfiling() {
+}
+
+bool BeingProfiled() {
+ return false;
+}
+
+#endif
+
+} // namespace debug
+} // namespace base
+