GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: include/crocoddyl/core/utils/timer.hpp Lines: 0 12 0.0 %
Date: 2024-02-13 11:12:33 Branches: 0 0 - %

Line Branch Exec Source
1
///////////////////////////////////////////////////////////////////////////////
2
// BSD 3-Clause License
3
//
4
// Copyright (C) 2019-2020, University of Edinburgh, LAAS-CNRS
5
// Copyright note valid unless otherwise stated in individual files.
6
// All rights reserved.
7
///////////////////////////////////////////////////////////////////////////////
8
9
#ifndef CROCODDYL_CORE_UTILS_TIMER_H_
10
#define CROCODDYL_CORE_UTILS_TIMER_H_
11
12
#include <ctime>
13
14
namespace crocoddyl {
15
16
class Timer {
17
 public:
18
  Timer() { clock_gettime(CLOCK_MONOTONIC, &start_); }
19
20
  inline void reset() { clock_gettime(CLOCK_MONOTONIC, &start_); }
21
22
  inline double get_duration() {
23
    clock_gettime(CLOCK_MONOTONIC, &finish_);
24
    duration_ = static_cast<double>(finish_.tv_sec - start_.tv_sec) * 1000000;
25
    duration_ += static_cast<double>(finish_.tv_nsec - start_.tv_nsec) / 1000;
26
    return duration_ / 1000.;
27
  }
28
29
  inline double get_us_duration() {
30
    clock_gettime(CLOCK_MONOTONIC, &finish_);
31
    duration_ = static_cast<double>(finish_.tv_sec - start_.tv_sec) * 1000000;
32
    duration_ += static_cast<double>(finish_.tv_nsec - start_.tv_nsec) / 1000;
33
    return duration_;
34
  }
35
36
 private:
37
  struct timespec start_;
38
  struct timespec finish_;
39
  double duration_;
40
};
41
}  // namespace crocoddyl
42
43
#endif  // CROCODDYL_CORE_UTILS_TIMER_H_