如何在C++中获取系统时间?
如何在C++中获取系统时间?
实际上,我正在尝试计算程序中一个函数完成所需的时间。所以我正在使用一些逻辑,在调用函数时获取系统时间,函数返回值时获取时间,然后通过减去这些值来得到完成所需的时间。所以,如果有人能告诉我更好的方法或者如何在一个实例中获取系统时间,那将会相当有帮助。
admin 更改状态以发布 2023年5月20日
你的问题完全取决于你使用的系统。每个系统都有自己的函数来获取当前时间。要找出系统运行了多长时间,您需要访问其中一个“高分辨率性能计数器”。如果您不使用性能计数器,通常仅限于微秒级别的精度(或更差),在分析函数速度时几乎是没有用的。
在Windows中,您可以通过“QueryPerformanceCounter()”函数访问计数器。这会返回一个在每个处理器上都不同的任意数字。要找出计数器中有多少个滴答声等于1秒,请调用“QueryPerformanceFrequency()”。
如果您正在非Windows平台下进行编码,只需google“性能计数器”和您正在编码的系统,它应该告诉您如何访问计数器。
编辑(澄清)
这是C++,只需包含windows.h并导入“Kernel32.lib”(似乎已删除我的超链接,请在http://msdn.microsoft.com/en-us/library/ms644904.aspx上查看文档)。对于C#,您可以使用“System.Diagnostics.PerformanceCounter”类。
我在计时代码时使用的方法是使用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的回复。