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

Mob*_*bin 3 c++

事实上,我正在尝试计算函数在我的程序中完成所需的时间.因此,我在调用函数时使用逻辑来获取系统时间,并在函数返回值时使用时间,然后减去我得到完成时间的值.因此,如果有人能告诉我一些更好的方法,或者只是如何在实例中获得系统时间,那将是非常有帮助的

Joh*_*n T 5

我对代码进行计时时使用的方法是time()函数.它返回一个数值来代表你的时代,这使得用于计算减法部分都更加容易.

相关代码:

#include <time.h>
#include <iostream>

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;
}
Run Code Online (Sandbox Code Playgroud)

请记住,这是用户时间.对于CPU,时间请看Ben的回复.


Gra*_*ers 4

您的问题完全取决于您使用的系统。每个系统都有自己的获取当前时间的函数。为了了解系统运行了多长时间,您需要访问“高分辨率性能计数器”之一。如果不使用性能计数器,通常会限制在微秒精度(或更差),这在分析函数速度时几乎毫无用处。

在 Windows 中,您可以通过“QueryPerformanceCounter()”函数访问计数器。这将返回每个处理器上不同的任意数字。要了解计数器 == 1 秒内有多少个刻度,请调用“QueryPerformanceFrequency()”。

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

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