社区首页 >问答首页 >为什么C clock()返回0

为什么C clock()返回0
EN

Stack Overflow用户
提问于 2012-03-26 11:13:35
回答 7查看 39K关注 0票数 11

我得到了类似这样的东西:

代码语言:javascript
代码运行次数:0
复制
clock_t start, end;
start=clock();

something_else();

end=clock();
printf("\nClock cycles are: %d - %d\n",start,end);

我总是得到“时钟周期是:0- 0”的输出。

知道为什么会这样吗?

(仅提供少量细节,something_else()函数使用蒙哥马利表示执行从左到右的求幂,而且我不确定something_else()函数是否确实需要一些不可忽略的时间。)

这是在Linux上。取消命名-a的结果为:

Linux snowy.*****.ac.uk 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-03-26 12:06:04

clock函数不测量CPU时钟周期。

C说,clock“将实现的最佳近似返回到程序自实现定义时代开始以来所使用的处理器时间,而实现定义的时代只与程序调用有关。”

如果在两次连续的clock调用之间,您的程序花费的时间少于clock函数的一个单位,那么您可能会得到0

POSIX clockCLOCKS_PER_SEC的单位定义为1000000 (单位则为1微秒)。

http://pubs.opengroup.org/onlinepubs/009604499/functions/clock.html

要测量x86/x64中的时钟周期,可以使用内联汇编来检索CPU Time Stamp计数器寄存器rdtsc的时钟计数。

票数 10
EN

Stack Overflow用户

发布于 2012-03-26 12:29:14

我猜原因是你的something_else() clock(). 消耗的时间非常少,超过了 the的精度。因此,我尝试了两次调用clock()startend都是零,但是当我在两者之间做一些耗时的事情时,结果是合理的。

下面是我的测试代码片段:

代码语言:javascript
代码运行次数:0
复制
int main(void) {   
    clock_t start, end;
    start = clock();
    int c;
    for (int i = 0; i < 100; i++) {
        for (int j = 0; j < (1<<30); j++) {
            c++;
        }
    }
    end = clock();
    printf("start = %d, end = %d\n", start, end);
    return 0;
}

在我电脑上的结果是:

代码语言:javascript
代码运行次数:0
复制
start = 0, end = 27700000

另外,还有两个提示:

  1. 测试时,不使用任何编译器优化。您可能认为something_else()很耗时,但编译器可能会忽略这些操作(特别是循环),因为它会将这些操作视为您平台上的meaningless.
  2. Use sizeof(clock_t),以查看clock_t.

的大小

票数 9
EN

Stack Overflow用户

发布于 2012-03-26 11:25:38

好吧,你想要something_else()花的时间吗?试试这个:

代码语言:javascript
代码运行次数:0
复制
#include <sys/time.h>
#include <stdio.h>  
#include <unistd.h>
int main(void) {
    struct timeval start, end;
    long mtime, secs, usecs;    

    gettimeofday(&start, NULL);
    something_else();
    gettimeofday(&end, NULL);
    secs  = end.tv_sec  - start.tv_sec;
    usecs = end.tv_usec - start.tv_usec;
    mtime = ((secs) * 1000 + usecs/1000.0) + 0.5;
    printf("Elapsed time: %ld millisecs\n", mtime);
    return 0;
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9871071

复制
相关文章
为什么in_array(0, ['a', 'b', 'c'])返回true
在PHP中,数据会自动转换类型后再进行比较。 这样可能会导致一些费解的现象: in_array(0, ['a', 'b', 'c']) // 返回bool(true),也就相当于数组中有0 array_search(0, ['a', 'b', 'c']) // 返回int(0),也就是第一个值的下标 0 == 'abc' // 返回bool(true),也就相当于相等 这两个表达式都返回true。 直观上看,0没有在数组['a', 'b', 'c']中,也不会等于abc这个字符串。 那怎么会返回tr
wangxl
2018/03/09
1.9K0
C语言函数返回 1 和返回 0 哪个好?
基本上,没有人会将大段的C语言代码全部塞入 main() 函数。更好的做法是按照复用率高、耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数。
混说Linux
2023/02/24
2.5K0
C语言函数返回 1 和返回 0 哪个好?
C语言函数返回1和返回0区别?
基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数。C语言代码的组合千变万化,因此函数的功能可能会比较复杂,不同的输入,常常产生不同的输出结果。
小林C语言
2020/12/24
5.3K1
C语言函数返回1和返回0区别?
在PHP中 为什么in_array(0, ['a', 'b', 'c'])返回true
直观上看,0没有在数组['a', 'b', 'c']中,也不会等于abc这个字符串。
用户9076598
2022/03/02
2.8K0
C语言函数执行成功时,返回1和返回0,究竟哪个好?
基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数。C语言代码的组合千变万化,因此函数的功能可能会比较复杂,不同的输入,常常产生不同的输出结果。
诸葛青云
2019/10/29
2.8K0
C语言函数执行成功时,返回1和返回0,究竟哪个好?
c++:time()和clock()的区别
time()和clock()两个函数的原型都在头文件<ctime>中声明。 time()和clock()的原型分别为:
用户7886150
2021/04/27
1.7K0
http返回错误状态_状态码返回0
代码里面我刚刚开始的时候使用的是HttpPost发的请求,另外一边呢,刚刚开始的时候只有一个get请求在那等着呢。
全栈程序员站长
2022/11/01
2.5K0
http返回错误状态_状态码返回0
为什么 insert 配置 "SELECT LAST_INSERT_ID()" 返回个0呢?
我大抵是卷上瘾了,横竖都睡不着,坐起来身来打开Mac和外接显示器,这Bug没有由来,默然看着打印异常的屏幕,一个是我的,另外一个也是我的。
小傅哥
2022/07/18
9900
Clock Skew , Clock Uncertainty和 Period
Intel 4790K的主频是4.0GHz,高通801的单核频率可达2.5GHz,A8处理器在1.2GHz,MSP430可以工作在几十MHz……这里的频率的意思都是类似的,这些处理器的频率都是厂商给定的。但是对于FPGA的工作频率而言却往往需要我们自己决定,在产品的设计初始就需要考虑FPGA工作在哪个频率,譬如250MHz。这个取值并不是瞎确定的,譬如如果定在1GHz,那显然是不可能的,有一本叫《XXXXX FPGA Data Sheet DC and Switch Characteristics》的手册给出了FPGA各个模块的直流供电特性和最高工作频率。这里给出的是理论工作上限制,Virtex-5各个模块工作频率最高大概在400-500MHz之间。当然还要考虑FPGA的输入clk了,即使有DCM等模块分频倍频,一般也不会选择一个很奇怪的分频比。
sea-wind
2019/07/31
1.9K0
Clock Skew , Clock Uncertainty和 Period
clock gating | ODC-based Clock Gating
在当前数字电路实现中,clock gating 是节省动态功耗最有效且成本最低的办法,所以一直以来业界都在想方设法进一步去挖掘,期望用这种低成本办法进一步节省动态功耗,如XOR clock gating. 关于clock gating 驴曾码过三篇短文《clock gating | 从ICG cell 在 library 中的定义说起》、《clock gating | Gating 的插入与验证》、《clock gating | clock gating 的timing check》。
老秃胖驴
2020/04/09
1.8K0
clock gating | ODC-based Clock Gating
Linux common clock framework(2)_clock provider
本文接上篇文章,从clock driver的角度,分析怎么借助common clock framework管理系统的时钟资源。换句话说,就是怎么编写一个clock driver。
233333
2023/05/02
1.3K0
C语言的数组为什么要从0开始编号
在学习数据结构与算法之美中看到一个知识点挺有趣,虽然不是作者压倒性的实验证明,但分析起来也是有道理的,我们来看看是怎么回事:
杨源鑫
2019/07/04
8880
C语言的数组为什么要从0开始编号
combinational clock gating Vs sequential clock gating
关于clock gating 已经写过:《clock gating | 从ICG cell 在 library 中的定义说起》《clock gating | Gating 的插入与验证》《clock gating | clock gating 的timing check》《clock gating | ODC-based Clock Gating》。最近在学习Joules 20.1 update training 时又接触到了两个新概念:combinational clock gating 跟 sequential clock gating, 觍着老脸去问研发大爷这是啥,大爷说:你丫不能自己谷歌一下吗?于是在ElectronicDesign 上找到了一篇好文章,深入简出地描述了两者的区别。
老秃胖驴
2021/01/18
2.5K0
combinational clock gating Vs sequential clock gating
CreateWindow返回空句柄而GetLastError返回0咋回事
调用CreateWindow或CreateWindowEx创建窗口返回空句柄时,我们总是会调用GetLastError看下错误码,就知道具体错误的原因(比如窗口类未注册),但如果GetLastError返回0没有报错,是怎么回事呢?
gaigai
2019/08/30
2.3K0
Sidebar Card Clock
由于本教程涉及的所有修改对缩进格式等有严格要求,担心自己控制不好的可以直接下载静态资源。参照教程进行修改。静态资源包内的index.pug为butterfly_v3.5.1版本。其他版本改法详见教程正文。
Akilar
2021/06/11
7990
HDLBits Count Clock
module top_module( input clk, input reset, input ena, output pm, output [7:0] hh, output [7:0] mm, output [7:0] ss); wire em; wire eh; assign em = (ss == 8'h59) & ena; assign eh = (ss == 8'h59) & (mm == 8'h59) & ena;
Player
2022/07/17
7320
python clock 时钟
--------------------------------windows.py------------------------------- """ ############################################################################### Classes that encapsulate top-level interfaces. Allows same GUI to be main, pop-up, or attached; content classes may inherit from these directly, or be mixed together with them per usage mode; may also be called directly without a subclass; designed to be mixed in after (further to the right than) app-specific classes: else, subclass gets methods here (destroy, okayToQuit), instead of from app-specific classes--can't redefine. ############################################################################### """
用户5760343
2022/05/13
9000
python clock 时钟
malloc(0)时程序会返回什么?
这个问题看起来十分刁钻,不过稍有常识的人都知道,制定 C 标准的那帮语言律师也不是吃白饭的,对这种奇奇怪怪的问题一定会有定义。翻阅C17 标准 草案 N2176,在 7.22.3 节里,有如下说法:
嵌入式与Linux那些事
2021/10/14
1.5K0
为什么1000==1000返回false,100==100返回true?
这可能是个讨论得较多的话题,但是我觉得它很有趣:为什么1000==1000返回false,100==100返回true?
三哥
2018/12/19
1.2K0
XMLHttpRequest HTTP请求的返回码为0 http status = 0
由于用户在http返回前关闭/取消,或者防火墙等原因,会造成http请求没有status信息。w3c有相应的说明:http://www.w3.org/TR/XMLHttpRequest/#the-status-attribute 4.7.1 The status attribute client . status Returns the HTTP status code. The status attribute must return the result of running these step
用户1258909
2018/07/03
5.8K0

相似问题

clock()返回0

24

clock()只返回0

261

为什么clock()以C格式返回-1

322

C:如何将clock()的返回值重置为0?

295

为什么基于c++ clock()的函数返回负值?

411
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档