首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  C/C++/Obj-C

奇怪的 clock_t

  •  
  •   dhxsy1994 · 221 天前 · 717 次点击
    这是一个创建于 221 天前的主题,其中的信息可能已经有所发展或是发生改变。
     11 int main()
     12
     13 {
     14     clock_t start;
     15     clock_t end;
     16
     17     start = clock();
     18     sleep(10);
     19     end = clock();
     20
     21     double total;
     22      total = (double)((end - start) / CLOCKS_PER_SEC);
     23     printf("total = %f\n",total);
     24 }
     25
    

    这样写代码居然输出是 0.000000 把老板的 FPGA 速度测错了,我觉得我老板会降低对我的印象了 唉

    5 回复  |  直到 2019-04-05 00:35:08 +08:00
        1
    zmj1316   221 天前 via Android
    🤣不自己先试一下的吗
        2
    jackmod   221 天前
    位置不对,要这样写:
    (double)(end - start) / CLOCKS_PER_SEC

    (end - start) 是整数,先转换它,而不是先除以一个巨大的数字再转换。
        3
    gulu   221 天前
    sleep 也有可能被 interrupt 导致提前返回,此时返回的是剩余的时间
        4
    jackmod   221 天前   ♥ 1
    然而我用 clock 得到的结果也不对(以前似乎遇到过这个问题来着),考虑换用 clock_gettime 吧。
    https://linux.die.net/man/3/clock_gettime
        5
    ryd994   221 天前 via Android   ♥ 1
    本来就应该用 gettime 这种情况下应该用 CLOCK_MONOTONIC

    其实你的问题我觉得 2 楼已经讲清楚了
    应该用浮点除法而不是整数除
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4001 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 07:13 · PVG 15:13 · LAX 23:13 · JFK 02:13
    ♥ Do have faith in what you're doing.