【问题标题】:Getting time elapsed in a C program using clock()使用clock()在C程序中获取时间
【发布时间】:2015-11-13 14:27:01
【问题描述】:

我一直在尝试使用时钟函数测量 C 程序中经过的时间,但每当我尝试打印任何时钟值时,我都会返回 0。例如:

    clock_t time1, time2;
    time1 = clock();
    printf("Time 1 is %d.\n", (int)time1);
    sleep(2);
    time2 = clock();
    printf("Time 2 is %d.\n", (int)time2);

在这两种情况下,time1 和 time2 都打印为 0。我感觉这是因为我在 printf 中使用了错误的类型,但我看到的每种类型似乎都不适合我。我用过 %Lf、%ld、%f。其他人可以在这里发现问题吗?

编辑:我尝试了此线程中提到的大多数类型:What’s the correct way to use printf to print a clock_t? 我什至尝试过 uintmax_t,但无法打印 p1 和 p2,我不知道如何验证它是否是类型问题,或者时钟是否没有返回足够的值。

【问题讨论】:

标签: c clock


【解决方案1】:

来自cplusplus.com

时钟程序返回程序消耗的处理器时间。

返回值以时钟滴答表示,单位为 恒定但系统特定长度的时间(与 CLOCKS_PER_SEC 时钟滴答每秒)。

时钟用作参考的历元因系统而异,但它是 与程序执行相关(通常是它的启动)。计算 程序的实际处理时间,clock返回的值 应与先前调用相同的返回值进行比较 功能。

基本上,如果您的计算时间太短,您将不会注意到任何事情。

尝试在第二次调用 clock() 之前添加一个从 0 到某个大对象的 while 循环并在其中增加一个 volatile 变量。

【讨论】:

  • 我调用了 sleep(2),所以这应该不是问题,对吧?
  • sleep 可能会产生,这样您的程序就不会消耗任何 CPU。为什么不试试 while 循环呢?
猜你喜欢
  • 2011-02-27
  • 2017-04-10
  • 2011-11-20
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
相关资源
最近更新 更多