如何在C中以毫秒为单位获取程序的执行时间?

ale*_*lex 10 c timer execution-time

目前,我得到我的程序的执行壁上时间致电:

time_t startTime = time(NULL);
//section of code
time_t endTime = time(NULL);
double duration = difftime(endTime, startTime);
Run Code Online (Sandbox Code Playgroud)

是否有可能以毫秒为单位获得挂壁时间?如果是这样的话?

Jon*_*ler 9

如果你在POSIX-ish机器上,请gettimeofday()改用; 这为您提供了合理的便携性和微秒级分辨率.

略微更深奥,但也在POSIX,是clock_gettime()功能,它给你纳秒分辨率.

在许多系统上,您将找到一个ftime()实际上以秒和毫秒为单位返回时间的函数.但是,它不再是单Unix规范(与POSIX大致相同).你需要标题<sys/timeb.h>:

struct timeb mt;
if (ftime(&mt) == 0)
{
     mt.time ... seconds
     mt.millitime ... milliseconds
}
Run Code Online (Sandbox Code Playgroud)

这至少可以追溯到版本7(或第7版)Unix,所以它已经广泛使用.

我也有我的亚秒计时码笔记times()clock(),再次使用其他结构和标题.我还有关于使用clock()每秒1000个时钟周期(毫秒时间)的Windows的注释,以及GetTickCount()在Windows 95上需要注意但在NT上没有注意到的旧接口.