仅使用ANSIC,有没有办法测量毫秒精度或更高的时间?我正在浏览time.h,但我只找到了秒精度函数.

推荐答案

没有提供优于1秒时间分辨率的ANSI C功能,但是POSIX功能gettimeofday提供微秒分辨率.时钟函数仅测量进程已执行的时间量,在许多系统上并不准确.

您可以按如下方式使用此函数:

struct timeval tval_before, tval_after, tval_result;

gettimeofday(&tval_before, NULL);

// Some code you want to time, for example:
sleep(1);

gettimeofday(&tval_after, NULL);

timersub(&tval_after, &tval_before, &tval_result);

printf("Time elapsed: %ld.%06ld\n", (long int)tval_result.tv_sec, (long int)tval_result.tv_usec);

这在我的机器上返回Time elapsed: 1.000870.

C++相关问答推荐

了解一些CLIPS原语数据类型

为什么下面的递归基本情况在C中不起作用?

如何将不同长度的位转换成字节数组?

在使用GTK 4 Columnview列表模型时,如何为多列添加排序函数.C编码,Linux/GNOME环境

丑陋的三重间接:可扩展的缓冲区管理 struct

在函数中使用复合文字来初始化C语言中的变量

为什么可以通过指向常量int的指针间接地改变整数的值?

C lang:当我try 将3个或更多元素写入数组时,出现总线错误

为什么STM32G474RE上没有启用RCC PLL

正确的TCP/IP数据包 struct

Rust FFI--如何用给出返回引用的迭代器包装C风格的迭代器?

在我的代码中,我需要在哪里编写输出函数?

是否可以通过调用两个函数来初始化2D数组?示例:ARRAY[STARTING_ROWS()][STARTING_COLUMNS()]

将返回的char*设置为S在函数中定义的字符串文字可能会产生什么问题?

CS50判断灯泡运动的问题,判断时多出一个灯泡,但不在终端上

pthread_create的用法

Valgrind正在使用一个Fexecve电话报告不可能发生的事情

Makefile无法将代码刷新到ATmega328p

未使用sem_open正确初始化信号量

哪些C++功能可以在外部C块中使用