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

Side by Side Diff: chrome/browser/chromeos/boot_times_loader.cc

Issue 6780035: Use lock-free lazy initialization for static histogram references (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/boot_times_loader.h" 5 #include "chrome/browser/chromeos/boot_times_loader.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 const std::string uma_prefix, 252 const std::string uma_prefix,
253 const std::vector<TimeMarker> login_times) { 253 const std::vector<TimeMarker> login_times) {
254 const int kMinTimeMillis = 1; 254 const int kMinTimeMillis = 1;
255 const int kMaxTimeMillis = 30000; 255 const int kMaxTimeMillis = 30000;
256 const int kNumBuckets = 100; 256 const int kNumBuckets = 100;
257 const FilePath log_path(kLogPath); 257 const FilePath log_path(kLogPath);
258 258
259 base::Time first = login_times.front().time(); 259 base::Time first = login_times.front().time();
260 base::Time last = login_times.back().time(); 260 base::Time last = login_times.back().time();
261 base::TimeDelta total = last - first; 261 base::TimeDelta total = last - first;
262 scoped_refptr<base::Histogram>total_hist = base::Histogram::FactoryTimeGet( 262 base::Histogram* total_hist = base::Histogram::FactoryTimeGet(
263 uma_name, 263 uma_name,
264 base::TimeDelta::FromMilliseconds(kMinTimeMillis), 264 base::TimeDelta::FromMilliseconds(kMinTimeMillis),
265 base::TimeDelta::FromMilliseconds(kMaxTimeMillis), 265 base::TimeDelta::FromMilliseconds(kMaxTimeMillis),
266 kNumBuckets, 266 kNumBuckets,
267 base::Histogram::kUmaTargetedHistogramFlag); 267 base::Histogram::kUmaTargetedHistogramFlag);
268 total_hist->AddTime(total); 268 total_hist->AddTime(total);
269 std::string output = 269 std::string output =
270 base::StringPrintf("%s: %.2f", uma_name.c_str(), total.InSecondsF()); 270 base::StringPrintf("%s: %.2f", uma_name.c_str(), total.InSecondsF());
271 base::Time prev = first; 271 base::Time prev = first;
272 for (unsigned int i = 0; i < login_times.size(); ++i) { 272 for (unsigned int i = 0; i < login_times.size(); ++i) {
273 TimeMarker tm = login_times[i]; 273 TimeMarker tm = login_times[i];
274 base::TimeDelta since_first = tm.time() - first; 274 base::TimeDelta since_first = tm.time() - first;
275 base::TimeDelta since_prev = tm.time() - prev; 275 base::TimeDelta since_prev = tm.time() - prev;
276 std::string name; 276 std::string name;
277 277
278 if (tm.send_to_uma()) { 278 if (tm.send_to_uma()) {
279 name = uma_prefix + tm.name(); 279 name = uma_prefix + tm.name();
280 scoped_refptr<base::Histogram>prev_hist = base::Histogram::FactoryTimeGet( 280 base::Histogram* prev_hist = base::Histogram::FactoryTimeGet(
281 name, 281 name,
282 base::TimeDelta::FromMilliseconds(kMinTimeMillis), 282 base::TimeDelta::FromMilliseconds(kMinTimeMillis),
283 base::TimeDelta::FromMilliseconds(kMaxTimeMillis), 283 base::TimeDelta::FromMilliseconds(kMaxTimeMillis),
284 kNumBuckets, 284 kNumBuckets,
285 base::Histogram::kUmaTargetedHistogramFlag); 285 base::Histogram::kUmaTargetedHistogramFlag);
286 prev_hist->AddTime(since_prev); 286 prev_hist->AddTime(since_prev);
287 } else { 287 } else {
288 name = tm.name(); 288 name = tm.name();
289 } 289 }
290 output += 290 output +=
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 login_time_markers_), 395 login_time_markers_),
396 kLoginTimeWriteDelayMs); 396 kLoginTimeWriteDelayMs);
397 have_registered_ = false; 397 have_registered_ = false;
398 } else { 398 } else {
399 AddLoginTimeMarker("LoginRenderNoNetwork", false); 399 AddLoginTimeMarker("LoginRenderNoNetwork", false);
400 } 400 }
401 } 401 }
402 } 402 }
403 403
404 } // namespace chromeos 404 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/history_quick_provider.cc ('k') | chrome/browser/chromeos/cros/cros_library_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698