diff options
author | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-05 04:48:53 +0000 |
---|---|---|
committer | jar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-05 04:48:53 +0000 |
commit | 81ce9f3b1eb34dc7f6954f0f6657a76b0f01fc12 (patch) | |
tree | 41b3caf1a55ba3cfa2f6cf13b0a5ce3d773d631f /chrome/browser/chromeos | |
parent | 4f7f4854821e8e4933ad2c662bfd9417eb604a68 (diff) | |
download | chromium_src-81ce9f3b1eb34dc7f6954f0f6657a76b0f01fc12.zip chromium_src-81ce9f3b1eb34dc7f6954f0f6657a76b0f01fc12.tar.gz chromium_src-81ce9f3b1eb34dc7f6954f0f6657a76b0f01fc12.tar.bz2 |
Use lock-free lazy initialization for static histogram references
Make all histogram macros thread safe, and fast by again
using statics to achieve performance.
...at the cost of:
Leak all histograms to avoid races at shutdown.
Also included leak suppression for valgrind.
r=rtenneti
BUG=78207
Review URL: http://codereview.chromium.org/6780035
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80412 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r-- | chrome/browser/chromeos/boot_times_loader.cc | 4 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/cros_library_loader.cc | 10 | ||||
-rw-r--r-- | chrome/browser/chromeos/external_metrics.cc | 6 |
3 files changed, 9 insertions, 11 deletions
diff --git a/chrome/browser/chromeos/boot_times_loader.cc b/chrome/browser/chromeos/boot_times_loader.cc index 4e08290..03359cf 100644 --- a/chrome/browser/chromeos/boot_times_loader.cc +++ b/chrome/browser/chromeos/boot_times_loader.cc @@ -259,7 +259,7 @@ void BootTimesLoader::WriteTimes( base::Time first = login_times.front().time(); base::Time last = login_times.back().time(); base::TimeDelta total = last - first; - scoped_refptr<base::Histogram>total_hist = base::Histogram::FactoryTimeGet( + base::Histogram* total_hist = base::Histogram::FactoryTimeGet( uma_name, base::TimeDelta::FromMilliseconds(kMinTimeMillis), base::TimeDelta::FromMilliseconds(kMaxTimeMillis), @@ -277,7 +277,7 @@ void BootTimesLoader::WriteTimes( if (tm.send_to_uma()) { name = uma_prefix + tm.name(); - scoped_refptr<base::Histogram>prev_hist = base::Histogram::FactoryTimeGet( + base::Histogram* prev_hist = base::Histogram::FactoryTimeGet( name, base::TimeDelta::FromMilliseconds(kMinTimeMillis), base::TimeDelta::FromMilliseconds(kMaxTimeMillis), diff --git a/chrome/browser/chromeos/cros/cros_library_loader.cc b/chrome/browser/chromeos/cros/cros_library_loader.cc index d631a6c..660bc2c 100644 --- a/chrome/browser/chromeos/cros/cros_library_loader.cc +++ b/chrome/browser/chromeos/cros/cros_library_loader.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -22,16 +22,14 @@ void addLibcrosTimeHistogram(const char* name, const base::TimeDelta& delta) { static const base::TimeDelta max_time = base::TimeDelta::FromSeconds(1); const size_t bucket_count(10); DCHECK(name); - scoped_refptr<base::Histogram> counter = base::Histogram::FactoryTimeGet( + base::Histogram* counter = base::Histogram::FactoryTimeGet( std::string(name), min_time, max_time, bucket_count, base::Histogram::kNoFlags); - if (counter.get()) { - counter->AddTime(delta); - VLOG(1) << "Cros Time: " << name << ": " << delta.InMilliseconds() << "ms."; - } + counter->AddTime(delta); + VLOG(1) << "Cros Time: " << name << ": " << delta.InMilliseconds() << "ms."; } } // namespace diff --git a/chrome/browser/chromeos/external_metrics.cc b/chrome/browser/chromeos/external_metrics.cc index edd48c0..830de18 100644 --- a/chrome/browser/chromeos/external_metrics.cc +++ b/chrome/browser/chromeos/external_metrics.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -86,7 +86,7 @@ void ExternalMetrics::RecordHistogram(const char* histogram_data) { } // Do not use the UMA_HISTOGRAM_... macros here. They cache the Histogram // instance and thus only work if |name| is constant. - scoped_refptr<base::Histogram> counter = base::Histogram::FactoryGet( + base::Histogram* counter = base::Histogram::FactoryGet( name, min, max, nbuckets, base::Histogram::kUmaTargetedHistogramFlag); counter->Add(sample); } @@ -101,7 +101,7 @@ void ExternalMetrics::RecordLinearHistogram(const char* histogram_data) { } // Do not use the UMA_HISTOGRAM_... macros here. They cache the Histogram // instance and thus only work if |name| is constant. - scoped_refptr<base::Histogram> counter = base::LinearHistogram::FactoryGet( + base::Histogram* counter = base::LinearHistogram::FactoryGet( name, 1, max, max + 1, base::Histogram::kUmaTargetedHistogramFlag); counter->Add(sample); } |