如何在C++中获取系统时间?

28 浏览
0 Comments

如何在C++中获取系统时间?

实际上,我正在尝试计算程序中一个函数完成所需的时间。所以我正在使用一些逻辑,在调用函数时获取系统时间,函数返回值时获取时间,然后通过减去这些值来得到完成所需的时间。所以,如果有人能告诉我更好的方法或者如何在一个实例中获取系统时间,那将会相当有帮助。

admin 更改状态以发布 2023年5月20日
0
0 Comments

你的问题完全取决于你使用的系统。每个系统都有自己的函数来获取当前时间。要找出系统运行了多长时间,您需要访问其中一个“高分辨率性能计数器”。如果您不使用性能计数器,通常仅限于微秒级别的精度(或更差),在分析函数速度时几乎是没有用的。

在Windows中,您可以通过“QueryPerformanceCounter()”函数访问计数器。这会返回一个在每个处理器上都不同的任意数字。要找出计数器中有多少个滴答声等于1秒,请调用“QueryPerformanceFrequency()”。

如果您正在非Windows平台下进行编码,只需google“性能计数器”和您正在编码的系统,它应该告诉您如何访问计数器。

编辑(澄清)
这是C++,只需包含windows.h并导入“Kernel32.lib”(似乎已删除我的超链接,请在http://msdn.microsoft.com/en-us/library/ms644904.aspx上查看文档)。对于C#,您可以使用“System.Diagnostics.PerformanceCounter”类。

0
0 Comments

我在计时代码时使用的方法是使用time()函数。它返回一个单一的数字值代表纪元,这样减法计算就更容易了。

相关代码:

#include 
#include 
int main (int argc, char *argv[]) {
int startTime, endTime, totalTime;
startTime = time(NULL);
/* relevant code to benchmark in here */
endTime = time(NULL);
totalTime = endTime - startTime;
std::cout << "Runtime: " << totalTime << " seconds.";
return 0;
}

请记住,这是用户时间。如果要查看CPU时间,请参见Ben的回复。

0