zoukankan      html  css  js  c++  java
  • 记录程序运行时间之clock 函数

    在C语言中,提供的clock函数,由于能够返回程序运行开始的时钟数,所以计数精度高,远高于毫秒。

    因此在程序运行计时时,经常是首选。 (当然time(),getrusage(), gettimeoftheday()等函数也是不错的选择。)

    可是在有些机器上,经常出现计数为负数,也就是存储clock() 返回值的clock_t 数据溢出的问题。 原因在哪里呢?

    查找定义可知, #define  clock_t long;因此就引发了long数据类型不在不同系统上所带了的不同位数的问题。  在64位 linux系统的机器上long的长度为8byte,因此有充足的计数空间。可是在32位linux机器,或者32/64位windows(http://stackoverflow.com/questions/384502/what-is-the-bit-size-of-long-on-64-bit-windows)机器上,long的长度都是4,那么如果CLOCK_PER_SEC是1000000的话,则在(2^31-1)/1000000 seconds的时候计数值溢出, 大概2147秒的时候计数失效。

    因此在使用clock()进行时间计数时需要注意这个问题。

    如果linux下 最长的128位long long数据类型,用于记录时间戳读取指令rdtsc返回值的情况,溢出的问题就更不会存在。

  • 相关阅读:
    03-数据结构(C语言版)
    01C语言基础(二)
    python杂项
    mmdetection源码阅读
    建立文件软连接
    python将test01文件夹中的文件剪切到test02文件夹中
    Probabilistic two-stage detection
    Activate-or-Not:learning-customized-activation
    CenterNet和CenterNet2笔记
    OpenCV视频检测人脸
  • 原文地址:https://www.cnblogs.com/operaculus/p/3116667.html
Copyright © 2011-2022 走看看