From 9e54a981c6bf2e836a093647b2050ad19dc0c57d Mon Sep 17 00:00:00 2001 From: Arno Fleck <38908098+CodeArno@users.noreply.github.com> Date: Mon, 9 Jul 2018 20:13:17 +0200 Subject: [PATCH] Introduce common::ToSeconds for std::chrono::steady_clock::duration. (#1244) Introduce a new overload of ToSeconds for std::chrono::steady_clock and use it for the work queue delay metric. --- cartographer/common/time.cc | 5 +++++ cartographer/common/time.h | 1 + cartographer/mapping/internal/2d/pose_graph_2d.cc | 4 +--- cartographer/mapping/internal/3d/pose_graph_3d.cc | 4 +--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/cartographer/common/time.cc b/cartographer/common/time.cc index 6874de2..8c2882d 100644 --- a/cartographer/common/time.cc +++ b/cartographer/common/time.cc @@ -31,6 +31,11 @@ double ToSeconds(const Duration duration) { .count(); } +double ToSeconds(const std::chrono::steady_clock::duration duration) { + return std::chrono::duration_cast>(duration) + .count(); +} + Time FromUniversal(const int64 ticks) { return Time(Duration(ticks)); } int64 ToUniversal(const Time time) { return time.time_since_epoch().count(); } diff --git a/cartographer/common/time.h b/cartographer/common/time.h index 4939741..7fffcb9 100644 --- a/cartographer/common/time.h +++ b/cartographer/common/time.h @@ -49,6 +49,7 @@ Duration FromMilliseconds(int64 milliseconds); // Returns the given duration in seconds. double ToSeconds(Duration duration); +double ToSeconds(std::chrono::steady_clock::duration duration); // Creates a time from a Universal Time Scale. Time FromUniversal(int64 ticks); diff --git a/cartographer/mapping/internal/2d/pose_graph_2d.cc b/cartographer/mapping/internal/2d/pose_graph_2d.cc index 7982d08..5319bb4 100644 --- a/cartographer/mapping/internal/2d/pose_graph_2d.cc +++ b/cartographer/mapping/internal/2d/pose_graph_2d.cc @@ -151,9 +151,7 @@ void PoseGraph2D::AddWorkItem(const std::function& work_item) { const auto now = std::chrono::steady_clock::now(); work_queue_->push_back({now, work_item}); kWorkQueueDelayMetric->Set( - std::chrono::duration_cast>( - now - work_queue_->front().time) - .count()); + common::ToSeconds(now - work_queue_->front().time)); } } diff --git a/cartographer/mapping/internal/3d/pose_graph_3d.cc b/cartographer/mapping/internal/3d/pose_graph_3d.cc index e29b193..5913669 100644 --- a/cartographer/mapping/internal/3d/pose_graph_3d.cc +++ b/cartographer/mapping/internal/3d/pose_graph_3d.cc @@ -149,9 +149,7 @@ void PoseGraph3D::AddWorkItem(const std::function& work_item) { const auto now = std::chrono::steady_clock::now(); work_queue_->push_back({now, work_item}); kWorkQueueDelayMetric->Set( - std::chrono::duration_cast>( - now - work_queue_->front().time) - .count()); + common::ToSeconds(now - work_queue_->front().time)); } }