counter.cc
Go to the documentation of this file.
1 // Copyright 2015 Google Inc. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "counter.h"
16 
17 namespace benchmark {
18 namespace internal {
19 
20 double Finish(Counter const& c, double cpu_time, double num_threads) {
21  double v = c.value;
22  if (c.flags & Counter::kIsRate) {
23  v /= cpu_time;
24  }
25  if (c.flags & Counter::kAvgThreads) {
26  v /= num_threads;
27  }
28  return v;
29 }
30 
31 void Finish(UserCounters *l, double cpu_time, double num_threads) {
32  for (auto &c : *l) {
33  c.second.value = Finish(c.second, cpu_time, num_threads);
34  }
35 }
36 
38  // add counters present in both or just in *l
39  for (auto &c : *l) {
40  auto it = r.find(c.first);
41  if (it != r.end()) {
42  c.second.value = c.second + it->second;
43  }
44  }
45  // add counters present in r, but not in *l
46  for (auto const &tc : r) {
47  auto it = l->find(tc.first);
48  if (it == l->end()) {
49  (*l)[tc.first] = tc.second;
50  }
51  }
52 }
53 
54 bool SameNames(UserCounters const& l, UserCounters const& r) {
55  if (&l == &r) return true;
56  if (l.size() != r.size()) {
57  return false;
58  }
59  for (auto const& c : l) {
60  if (r.find(c.first) == r.end()) {
61  return false;
62  }
63  }
64  return true;
65 }
66 
67 } // end namespace internal
68 } // end namespace benchmark
benchmark::Counter::kAvgThreads
@ kAvgThreads
Definition: benchmark.h:347
benchmark
Definition: benchmark.h:241
benchmark::Counter::flags
Flags flags
Definition: benchmark.h:353
benchmark::Counter::value
double value
Definition: benchmark.h:352
benchmark::internal::Finish
double Finish(Counter const &c, double cpu_time, double num_threads)
Definition: counter.cc:20
benchmark::internal::Increment
void Increment(UserCounters *l, UserCounters const &r)
Definition: counter.cc:37
benchmark::Counter::kIsRate
@ kIsRate
Definition: benchmark.h:344
benchmark::Counter
Definition: benchmark.h:337
v
const GLdouble * v
Definition: glcorearb.h:3106
r
GLboolean r
Definition: glcorearb.h:3228
internal
Definition: any.pb.h:40
benchmark::UserCounters
std::map< std::string, Counter > UserCounters
Definition: benchmark.h:364
counter.h
it
MapIter it
Definition: php/ext/google/protobuf/map.c:205
benchmark::internal::SameNames
bool SameNames(UserCounters const &l, UserCounters const &r)
Definition: counter.cc:54


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:48