事实上,我正在尝试计算函数在我的程序中完成所需的时间.因此,我在调用函数时使用逻辑来获取系统时间,并在函数返回值时使用时间,然后减去我得到完成时间的值.因此,如果有人能告诉我一些更好的方法,或者只是如何在实例中获得系统时间,那将是非常有帮助的
我对代码进行计时时使用的方法是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的回复.
您的问题完全取决于您使用的系统。每个系统都有自己的获取当前时间的函数。为了了解系统运行了多长时间,您需要访问“高分辨率性能计数器”之一。如果不使用性能计数器,通常会限制在微秒精度(或更差),这在分析函数速度时几乎毫无用处。
在 Windows 中,您可以通过“QueryPerformanceCounter()”函数访问计数器。这将返回每个处理器上不同的任意数字。要了解计数器 == 1 秒内有多少个刻度,请调用“QueryPerformanceFrequency()”。
如果您在 Windows 以外的平台下编码,只需 google 性能计数器和您正在编码的系统,它应该告诉您如何访问计数器。
编辑(澄清)
这是c ++,只需包含windows.h并导入“Kernel32.lib”(似乎已删除我的超链接,请查看文档: http ://msdn.microsoft.com/en-us/library /ms644904.aspx)。对于 C#,您可以使用“System.Diagnostics.PerformanceCounter”类。
| 归档时间: |
|
| 查看次数: |
40764 次 |
| 最近记录: |