【问题标题】:CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_MONOTONIC_RAW values.CLOCK_REALTIME、CLOCK_MONOTONIC、CLOCK_MONOTONIC_RAW 值。
【发布时间】:2017-12-01 09:26:41
【问题描述】:

我运行了基本的 sn-p 代码。

void emptyFunction(){
};

int main(){

const int conversion = 1000000000;
unsigned long long func_sum = 0;
clock_gettime(CLOCK_REALTIME, &funcTimeStart);
emptyFunction();
clock_gettime(CLOCK_REALTIME, &funcTimeEnd);

func_sum=((funcTimeEnd.tv_sec*nanoConversion)+funcTimeEnd.tv_nsec)-((funcTimeStart.tv_sec*nanoConversion)+funcTimeStart.tv_nsec);

这是为了测试运行一个空函数所需的时间。

我每个运行 10 次,我的值如下:

如果我用过:

CLOCK_REALTIME - 我的值是 57-108 纳秒

CLOCK_MONOTONIC - 我的值是 39-98 纳秒

CLOCK_MONOTONIC_RAW - 我的值是 282-487 纳秒

CLOCK_PROCESS_CPUTIME_ID - 我的值是 662-1049 纳秒

据我了解,CLOCK_REALTIME 使用挂钟时间来衡量,而 CLOCK_PROCESS_CPUTIME_ID 使用 CPU 运行代码的时间。那么 CLOCK_PROCESS_CPUTIME_ID 不会总是有一个较小的数字吗?为什么这里不是这样?

【问题讨论】:

  • 您是否禁用了中断?您测量的时间还包含 ISR 事件。我认为这将是所有措施。此外,如果你用来调用一个什么都不做的函数,编译器可能不会生成调用(尤其是当你使用优化时)
  • 您没有测量空函数的执行时间,而是测量了clock_gettime() 函数实现中的开销量。当然,这取决于你通过什么clockid_t。

标签: c time clock


【解决方案1】:

您没有测量空函数的执行时间,而是测量了 clock_gettime() 函数实现中的开销。当然,这取决于你通过什么clockid_t。 ——汉斯·帕桑特

【讨论】:

    猜你喜欢
    • 2014-10-24
    • 2011-04-01
    • 2012-12-25
    • 2022-01-24
    • 2012-06-10
    • 2011-07-01
    • 1970-01-01
    • 2012-12-24
    • 2013-01-21
    相关资源
    最近更新 更多