1// Copyright 2018 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 UTIL_TICKS_H_ 6#define UTIL_TICKS_H_ 7 8#include <stdint.h> 9 10using Ticks = uint64_t; 11 12class TickDelta { 13 public: 14 explicit TickDelta(uint64_t delta) : delta_(delta) {} 15 16 double InSecondsF() const { return delta_ / 1000000000.0; } 17 double InMillisecondsF() const { return delta_ / 1000000.0; } 18 double InMicrosecondsF() const { return delta_ / 1000.0; } 19 double InNanosecondsF() const { return delta_; } 20 21 uint64_t InSeconds() const { return delta_ / 1000000000; } 22 uint64_t InMilliseconds() const { return delta_ / 1000000; } 23 uint64_t InMicroseconds() const { return delta_ / 1000; } 24 uint64_t InNanoseconds() const { return delta_; } 25 26 uint64_t raw() const { return delta_; } 27 28 private: 29 uint64_t delta_; 30}; 31 32Ticks TicksNow(); 33 34TickDelta TicksDelta(Ticks new_ticks, Ticks old_ticks); 35 36class ElapsedTimer { 37 public: 38 ElapsedTimer() : start_(TicksNow()) {} 39 TickDelta Elapsed() { return TicksDelta(TicksNow(), start_); } 40 41 private: 42 Ticks start_; 43}; 44 45#endif // UTIL_TICKS_H_ 46