c - 如何测量 C 程序中的 scanf 时间?

标签 c

在下面的程序中,我想测量输入时间,即用户输入数组变量所花费的时间:

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

int main()
{
    int i, array[10];
    double user_input_time;
    clock_t input_start, input_end;

    input_start = clock();

    for (i = 0; i < 10; i++)
    {
        scanf("%d", &array[i]);
    }

    input_end = clock();

    user_input_time = ((double)(input_end - input_start)) / CLOCKS_PER_SEC;

    printf("User Input Time : %f\n", user_input_time);

    return 0;
 }

上面,我得到的是处理器时间,而不是用户输入数组的所有 10 个变量所花费的输入时间。

拜托,有人可以帮我这样做吗。

最佳答案

包括:time.h

使用:

int main()
{
    time_t start = time(NULL);
    //Do your operations here
    printf("%.2f\n", (double)(time(NULL) - start));

    return 0;
}

注意 - 我们可以使用clock_gettime 以获得更精确的结果 - link


使用clock_gettime

int main () { 
    struct timespec start, finish; 
    clock_gettime(CLOCK_REALTIME, &start); 

    // do your operations here

    clock_gettime(CLOCK_REALTIME, &finish); 

    long seconds = finish.tv_sec - start.tv_sec; 
    long ns = finish.tv_nsec - start.tv_nsec; 

    if (start.tv_nsec > finish.tv_nsec) { // clock underflow 
    --seconds; 
    ns += 1000000000; 
    } 
    printf("seconds without ns: %ld\n", seconds); 
    printf("nanoseconds: %ld\n", ns); 
    printf("total seconds: %e\n", (double)seconds + (double)ns/(double)1000000000); 
} 

关于c - 如何测量 C 程序中的 scanf 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49813363/

相关文章:

c - 是否有用于 C 的静态代码检查器会标记缺少的互斥锁解锁?

c - 用户在运行时输入的字符串的大小

c - C 中的循环意外运行

c - 为什么这个程序会自动将结果转换为 INT_MIN 而不是整数溢出?

c - 关于C中内存使用的问题

c - 使用 C 对链表进行排序

c - Linux 上 UDP 和 TCP 的内核绕过 - 它涉及什么?

c - 从行中读取单词

c 将字符串转换为带小数的数字(可能有前导零)的正确方法

c - 错误: assignment to expression with array type while using selection-sort