【问题标题】:How to change type of std::chrono::high_resolution_clock::now(); to long?如何更改 std::chrono::high_resolution_clock::now() 的类型;长?
【发布时间】:2018-04-11 08:08:24
【问题描述】:
t_start = std::chrono::high_resolution_clock::now();
t_end = std::chrono::high_resolution_clock::now();

long t = t_start; //error

此外,我无法将 t_startt_end 一起添加。

t_start += t_end; //error

【问题讨论】:

  • 不要存储太久。将其存储为std::chrono::high_resolution_clock::time_point。你到底想做什么。
  • 我正在尝试计算每次调用函数时的挂墙时间。
  • 为什么要加两个时间点?时间之间的差异通常很重要。你能详细解释一下你的预期用途吗?
  • 我用这个函数来计算挂墙时间,但是对于多线程环境我想改变它来计算挂墙时间和cpu时间。对于 cpu 时间,我使用 std::clock 和墙上时间 std::chrono micro。对于这个程序,我在启动程序时计算两个时间,而不是每当我调用这个函数来计算 void get_wall_time(uintmax_t* wall_time, long* wall_time_ns) { clock_gettime(CLOCK_MONOTONIC, &ts); *wall_time = uintmax_t(ts.wall_time); *wall_time_ns = ts.wall_time_ns; }

标签: c++ clock chrono


【解决方案1】:

添加两个时间点没有意义,一个操作数应该是一个持续时间。考虑以下句子:

将“自 1970 年 1 月 1 日以来的 1523439002.733219701 秒”添加到“自 1970 年 1 月 1 日以来的 1523439842.733219701 秒”

将“500 秒”添加到“自 1970 年 1 月 1 日以来的 523439842.733219701 秒”

将“自 1970 年 1 月 1 日以来的 523439842.733219701 秒”添加到“500 秒”

将“500 秒”添加到“1000 秒”

从您的 cmets 中,您实际上想要的是传递时间点。只需将接受longs 的代码更改为接受std::chrono::high_resolution_clock::time_points

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 2014-03-23
    • 2015-05-14
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2016-09-22
    • 2018-05-21
    相关资源
    最近更新 更多