c - 在 linux 中测量 c 程序的运行时间

标签 c linux time

我正在尝试测量 Linux 中耗时。我的回答一直返回零,这对我来说毫无意义。以下是我在我的程序中测量时间的方式。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

main()
{
    double p16 = 1, pi = 0, precision = 1000;
    int k;
    unsigned long micros = 0;
    float millis = 0.0;
    clock_t start, end;
    start = clock();
    // This section calculates pi
    for(k = 0; k <= precision; k++)
    {
        pi += 1.0 / p16 * (4.0 / (8 * k + 1) - 2.0 / (8 * k + 4) - 1.0 / (8 * k + 5) - 1.0 / (8 * k + 6));
        p16 *= 16;
    }
    end = clock();
    micros = end - start;
    millis = micros / 1000;
    printf("%f\n", millis); //my time keeps being returned as 0

    printf("this value of pi is  : %f\n", pi);
}

最佳答案

三种选择

  1. 时钟()
  2. gettimeofday()
  3. clock_gettime()

clock_gettime() 达到纳秒级精度并且支持 4 个时钟。

  • CLOCK_REALTIME

    系统级实时时钟。设置此时钟需要适当的权限。

  • CLOCK_MONOTONIC

    无法设置的时钟,表示从某个未指定的起点开始的单调时间。

  • CLOCK_PROCESS_CPUTIME_ID

    来自 CPU 的高分辨率每进程计时器。

  • CLOCK_THREAD_CPUTIME_ID

    线程特定的 CPU 时钟。

你可以把它当作

#include <time.h>

struct timespec start, stop;

clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);

/// do something

clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &stop);

double result = (stop.tv_sec - start.tv_sec) * 1e6 + (stop.tv_nsec - start.tv_nsec) / 1e3;    // in microseconds

关于c - 在 linux 中测量 c 程序的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682824/

相关文章:

python - 如何使用 C Python API 从 C 注入(inject) Python 中的可捕获异常?

c - 如果条件在 c 中有效,为什么里面有 printf?

c - (int)pow(n,m) 对于某些正整数 n,m 会是错误的吗?

android - 如何在 "Time"对象中存储小时和分钟

java - 尝试循环更新日期和时间

c++ - 无法通过终端运行应用程序,但应用程序在 XCode 中运行良好

python - Linux 上的 OpenCv + Gstreamer + python

c - 如何将字符串与 EOF 进行比较?

javascript - GYP 在 pcduino 上安装 Node 时出错

php time() 或 mysql unix_timestamp()?