| // Copyright 2018 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef UTIL_TICKS_H_ | 
 | #define UTIL_TICKS_H_ | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | using Ticks = uint64_t; | 
 |  | 
 | class TickDelta { | 
 |  public: | 
 |   explicit TickDelta(uint64_t delta) : delta_(delta) {} | 
 |  | 
 |   double InSecondsF() const { return delta_ / 1000000000.0; } | 
 |   double InMillisecondsF() const { return delta_ / 1000000.0; } | 
 |   double InMicrosecondsF() const { return delta_ / 1000.0; } | 
 |   double InNanosecondsF() const { return delta_; } | 
 |  | 
 |   uint64_t InSeconds() const { return delta_ / 1000000000; } | 
 |   uint64_t InMilliseconds() const { return delta_ / 1000000; } | 
 |   uint64_t InMicroseconds() const { return delta_ / 1000; } | 
 |   uint64_t InNanoseconds() const { return delta_; } | 
 |  | 
 |   uint64_t raw() const { return delta_; } | 
 |  | 
 |  private: | 
 |   uint64_t delta_; | 
 | }; | 
 |  | 
 | Ticks TicksNow(); | 
 |  | 
 | TickDelta TicksDelta(Ticks new_ticks, Ticks old_ticks); | 
 |  | 
 | class ElapsedTimer { | 
 |  public: | 
 |   ElapsedTimer() : start_(TicksNow()) {} | 
 |   TickDelta Elapsed() { return TicksDelta(TicksNow(), start_); } | 
 |  | 
 |  private: | 
 |   Ticks start_; | 
 | }; | 
 |  | 
 | #endif  // UTIL_TICKS_H_ |