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返回值的情况,溢出的问题就更不会存在。

  • 相关阅读:
    C语言知识
    Java课程设计——个人
    Java大作业
    DAO模式代码阅读及应用
    有理数设计
    泛型 -Java
    集合框架之ArrayList -Java
    图总结
    树、二叉树、查找算法总结
    编辑器、编译器、文件、IDE等常见概念辨析
  • 原文地址:https://www.cnblogs.com/operaculus/p/3116667.html
Copyright © 2011-2022 走看看