【问题标题】:Writing a C counter编写 C 计数器
【发布时间】:2014-04-20 12:49:52
【问题描述】:

我正在尝试制作一个 C 计数器,它可以在正在进行的程序中随时显示自程序启动以来经过了多少毫秒。

任何示例将不胜感激。我试过自己做,但在使用长整数时遇到错误...

可能已经有一个函数可以执行此操作,但我想知道该函数是如何工作的,仅在 C 语言中。有人可以帮忙吗?

【问题讨论】:

标签: c counter


【解决方案1】:

您正在寻找的是一种跟踪基准测试的方法。这是一个简单的过程,只需要您使用时间库。下面的代码应该很容易理解:

#include <time.h>

void foo()
{
    int sum, j;
    clock_t start, end;

    for(j = 0; j < 10; j++){
        start = clock();
        /* Do stuff here*/
        end = clock();
        printf("%.6f\n", (double) (end - start) / CLOCKS_PER_SEC);
    }
}

是的,我知道这不是您所要求的。我特意发布一个答案,让你动动脑筋来适应你的家庭作业。

【讨论】:

  • 来自clock() 联机帮助页:请注意,时间可以绕过去。在 CLOCKS_PER_SEC 等于 1000000 的 32 位系统上,此函数将大约每 72 分钟返回相同的值。
  • 请记住,clock() 在不同平台上的行为有点不同。在某些情况下,它测量挂钟时间,在其他情况下,它测量使用 CPU 所花费的时间。您必须坚持使用 time(),它可以为您提供秒级分辨率,或者更多特定于平台的分辨率,例如gettimeofday()
  • clock_gettime 之类的CLOCK_MONOTONICCLOCK_PROCESS_CPUTIME_IDCLOCK_THREAD_CPUTIME_ID 之一
  • @nos 以下是从手册页逐字复制的 C89 和 C99 标准: RETURN:返回的值是到目前为止使用的 CPU 时间,作为 clock_t;要获得使用的秒数,请除以 CLOCKS_PER_SEC。如果使用的处理器时间不可用或其值无法表示,则函数返回值 (clock_t) -1。 CPU 时间总是(在兼容的编译器中)。
  • @ciphermagi 够公平的。 OP 不想要 CPU 时间,而是自程序启动以来经过的挂钟时间。 (而 win32 是 clock() 将返回挂钟时间的那个 - 即不符合)。
猜你喜欢
  • 2020-07-30
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
相关资源
最近更新 更多