• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_PERFORMANCE_MONITOR_METRIC_H_
6 #define CHROME_BROWSER_PERFORMANCE_MONITOR_METRIC_H_
7 
8 #include <string>
9 #include "base/time/time.h"
10 
11 namespace performance_monitor {
12 
13 // IMPORTANT: To add new metrics, please
14 // - Place the new metric above METRIC_NUMBER_OF_METRICS.
15 // - Add a member to the MetricKeyChar enum in key_builder.cc.
16 // - Add the appropriate messages in generated_resources.grd.
17 // - Add the appropriate functions in
18 //   chrome/browser/ui/webui/performance_monitor/performance_monitor_l10n.h.
19 enum MetricType {
20   METRIC_UNDEFINED,
21 
22   // CPU and memory usage are combined for all Chrome-related processes.
23   METRIC_CPU_USAGE,
24   METRIC_PRIVATE_MEMORY_USAGE,
25   METRIC_SHARED_MEMORY_USAGE,
26 
27   // Timing measurements; these are all independent metrics (e.g., session
28   // restore time is independent of startup time, even though they may happen
29   // in sequence). Test startup time refers to any non-normal startup time, e.g.
30   // when we run test suites.
31   METRIC_STARTUP_TIME,
32   METRIC_TEST_STARTUP_TIME,
33   METRIC_SESSION_RESTORE_TIME,
34   METRIC_PAGE_LOAD_TIME,
35 
36   // Total number of bytes read since PerformanceMonitor first started running.
37   METRIC_NETWORK_BYTES_READ,
38 
39   METRIC_NUMBER_OF_METRICS
40 };
41 
42 struct Metric {
43  public:
44   Metric();
45   Metric(MetricType metric_type,
46          const base::Time& metric_time,
47          const double metric_value);
48   Metric(MetricType metric_type,
49          const std::string& metric_time,
50          const std::string& metric_value);
51   ~Metric();
52 
53   // Check the value in the metric to make sure that it is reasonable. Since
54   // some metric-gathering methods will fail and return incorrect values, we
55   // need to try to weed these out as best we can.
56   bool IsValid() const;
57 
58   // This converts the double stored in value to a string format. This will
59   // not perform any checking on the validity of the metric, and only makes
60   // sense if the metric IsValid().
61   std::string ValueAsString() const;
62 
63   MetricType type;
64   base::Time time;
65   double value;
66 };
67 
68 }  // namespace performance_monitor
69 
70 #endif  // CHROME_BROWSER_PERFORMANCE_MONITOR_METRIC_H_
71