当前位置: 首页 > 面试题库 >

clock()time.h的精度

狄鸿禧
2023-03-14
问题内容

我正在尝试计算函数用于运行的滴答声的数量,并使用clock()像这样的函数来这样做:

unsigned long time = clock();
myfunction();
unsigned long time2 = clock() - time;
printf("time elapsed : %lu",time2);

但是问题在于它返回的值是10000的倍数,我认为是CLOCK_PER_SECOND。有没有一种方法或等效函数值更精确?

我使用的是64位Ubuntu,但是希望该解决方案可以在Windows和Mac OS等其他系统上运行。


问题答案:

POSIX中有许多更准确的计时器。

  • gettimeofday()-正式淘汰,但可广泛使用;微秒的分辨率。
  • clock_gettime()- 纳秒级分辨率的替代品gettimeofday()(但不一定广泛可用;在Solaris的旧版本中,需要-lposix4链接)。

还有其他亚秒级计时器,它们或多或少具有上古性,可移植性和分辨率,包括:

  • ftime() -毫秒分辨率(在POSIX 2004中标记为“旧版”;在POSIX 2008中未标记)。
  • clock()-您已经知道。请注意,它测量的是CPU时间,而不是经过的时间(挂钟)。
  • times()- CLK_TCKHZ。请注意,这将测量父进程和子进程的CPU时间。

不要使用ftime()times()除非有没有好。最终的后备但不满足您的即时要求是

  • time() -一秒钟的分辨率。

clock()函数以表示,单位为CLOCKS_PER_SEC,POSIX
要求该值为1,000,000,但是增量的发生频率可能​​较低(每秒100次是一个公共频率)。返回值必须定义为CLOCKS_PER_SEC以秒为单位获取时间。



 类似资料:
  • time.h头定义了四种变量类型,两种宏和用于操作日期和时间的各种函数。 Library变量 (Library Variables) 以下是标题time.h中定义的变量类型 - Sr.No. 变量和描述 1 size_t 这是无符号整数类型,是sizeof关键字的结果。 2 clock_t 这是适合存储处理器时间的类型。 3 time_t is 这是适合存储日历时间的类型。 4 struct tm

  • 该对象用于跟踪时间。如果performance.now可用,则 Clock 对象通过该方法实现,否则回落到使用略欠精准的Date.now来实现。 构造函数 Clock( autoStart : Boolean ) autoStart — (可选) 是否要自动开启时钟。默认值是 true。 属性 .autoStart : Boolean 如果设置为 true,则在第一次 update 时开启时钟。默

  • 我们已经在Highcharts Configuration Syntax一章中看到了用于绘制图表的配置 。 下面给出时钟的示例。 配置 (Configurations) 现在让我们看一下所采取的其他配置/步骤。 chart.type 将图表类型配置为基于计量。 将类型设置为“规格”。 var chart = { type: 'guage' }; pane 此类型仅适用于极坐标图和角度计。

  • 描述 (Description) C库函数clock_t clock(void)返回自程序启动以来经过的时钟周期数。 要获得CPU使用的秒数,您需要除以CLOCKS_PER_SEC。 在CLOCKS_PER_SEC等于1000000的32位系统上,此函数将大约每72分钟返回相同的值。 声明 (Declaration) 以下是clock()函数的声明。 clock_t clock(void) 参数

  • Clock Signal 是一个 8-bit / 16-bit 的游戏模拟器,用户可以直接启动经典软件,避免了与模拟器和经典机器相关的学习曲线。 该模拟器旨在提供: 单击加载任何支持平台的任何源文件; 具有较大的信号处理倾斜度,可准确再现原始输出; 同时最大限度地减少延迟。 它目前包含以下模拟: Acorn Electron; Amstrad CPC; Apple II/II+ and IIe;

  • 实现时钟效果。有秒针、分针和时针。 [Code4App.com]