首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时钟节拍和时钟周期的概念

时钟节拍和时钟周期的概念
EN

Stack Overflow用户
提问于 2014-09-09 19:54:06
回答 4查看 11.7K关注 0票数 3

我写了一个非常小的代码来测量我的乘法算法所花费的时间:

代码语言:javascript
复制
  clock_t begin, end;
  float time_spent;

begin = clock();
a = b*c;
end = clock();
time_spent = (float)(end - begin)/CLOCKS_PER_SEC;

我在Windows下使用mingw。

我猜end = clock()会在那个特定时刻给我时钟滴答作响。从begin中减去它会得到乘法所消耗的时钟节拍。当我除以CLOCKS_PER_SEC时,我将得到总时间。

我的第一个问题是:时钟节拍和时钟周期之间有区别吗?

我的算法是如此之小,以至于差值end-begin为0。这是否意味着我的代码执行时间不到1个刻度,这就是为什么我的代码执行时间为零?

EN

回答 4

Stack Overflow用户

发布于 2014-09-09 20:13:27

我的第一个问题是:时钟节拍和时钟周期之间有区别吗?

是。时钟节拍可以是1毫秒或微秒,而时钟周期可以是0.3纳秒。在POSIX系统上,必须将CLOCKS_PER_SEC定义为1000000 (100,000)。请注意,如果不能以微秒分辨率获得CPU测量值,则clock()返回值中的最小跳跃将大于1。

我这里的算法很小,所以

-begin的差值是0。这是否意味着我的代码执行时间不到1个刻度,这就是为什么我的代码执行时间为零?

是。为了获得更好的读数,我建议你循环足够的迭代,这样你就可以测量几秒钟以上。

票数 4
EN

Stack Overflow用户

发布于 2014-09-09 20:14:44

四个你的第一个问题:时钟滴答器指的是主系统时钟。它是设备可识别的最小时间单位。时钟周期是一个完整的处理器脉冲完成所需的时间。这个u可以通过你的cpu cpeed来识别,单位是Hz。2 2GHz处理器每秒执行2,000,000,000个时钟周期。

关于你的第二个问题:可能是。

票数 3
EN

Stack Overflow用户

发布于 2020-09-12 03:37:33

从系统的角度回答时钟滴答和时钟周期之间的差异

每个处理器都伴随着一个物理时钟(通常是石英晶体时钟),它以特定的频率(振动/秒)振荡。处理器在物理时钟产生的中断的帮助下跟踪时间,物理时钟在每个时间周期T中断处理器。这个中断被称为“时钟滴答”。CPU计算自系统启动以来它所看到的中断次数,并在调用clock()时返回该值。通过取两个时钟节拍值之间的差值(从clock ()获得),您将获得在这两个时间点之间看到的中断次数。

大多数现代操作系统将T值编程为1微秒,即物理时钟每隔1微秒中断一次,这是大多数物理时钟广泛支持的最低时钟粒度。当T为1微秒时,时钟周期可计算为每秒1000000。因此,有了这些信息,您就可以计算出两个时钟节拍值的差值所经过的时间,即两个节拍*节拍周期之间的差

注意:操作系统定义的时钟周期必须是物理时钟上的<=振动/秒,否则会有精度损失

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25743995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档