PerfCountersBuilder& operator=(const PerfCountersBuilder &rhs);
void add_impl(int idx, const char *name,
const char *description, const char *nick, int prio, int ty, int unit=UNIT_NONE,
- unique_ptr<PerfHistogram<>> histogram = nullptr);
+ std::unique_ptr<PerfHistogram<>> histogram = nullptr);
PerfCounters *m_perf_counters;
type(other.type),
unit(other.unit),
u64(other.u64.load()) {
- pair<uint64_t,uint64_t> a = other.read_avg();
+ auto a = other.read_avg();
u64 = a.first;
avgcount = a.second;
avgcount2 = a.second;
// read <sum, count> safely by making sure the post- and pre-count
// are identical; in other words the whole loop needs to be run
// without any intervening calls to inc, set, or tinc.
- pair<uint64_t,uint64_t> read_avg() const {
+ std::pair<uint64_t,uint64_t> read_avg() const {
uint64_t sum, count;
do {
count = avgcount2;
sum = u64;
} while (avgcount != count);
- return make_pair(sum, count);
+ return { sum, count };
}
};
template <typename T>
struct avg_tracker {
- pair<uint64_t, T> last;
- pair<uint64_t, T> cur;
+ std::pair<uint64_t, T> last;
+ std::pair<uint64_t, T> cur;
avg_tracker() : last(0, 0), cur(0, 0) {}
T current_avg() const {
if (cur.first == last.first)
return 0;
return (cur.second - last.second) / (cur.first - last.first);
}
- void consume_next(const pair<uint64_t, T> &next) {
+ void consume_next(const std::pair<uint64_t, T> &next) {
last = cur;
cur = next;
}
const std::string &counter = "") {
dump_formatted_generic(f, schema, true, counter);
}
- pair<uint64_t, uint64_t> get_tavg_ns(int idx) const;
+ std::pair<uint64_t, uint64_t> get_tavg_ns(int idx) const;
const std::string& get_name() const;
void set_name(std::string s) {