如何衡量程序所花费的时间
How to measure the amount of time taken by program
我想
测量我的C++程序所花费的时间,但是,如果我使用:
time_t begin, end;
time_t(&begin);
func(); //my function...it contains the code whose elapsed time I want to measure
time(&end);
cout<<"n Time elapsed:"<<difftime(end, begin) <<" seconds"<<endl;
我得到的时间是 0 秒。
gprof 在我的情况下也不起作用,因为它表明它无法按照我的程序的要求分配内存量。
有没有其他方法可以衡量我的程序所需的时间。Valgrind的地块工具确实显示了快照所花费的时间,但文档没有提到它是以毫秒还是微秒为单位。
请建议一个合适的方法?
如果我能以毫秒为单位测量时间,那就太好了。
使用 std::chrono。
http://en.cppreference.com/w/cpp/chrono/duration
您可能还想查看Facebook的基准测试实用程序。
https://github.com/facebook/folly/blob/master/folly/docs/Benchmark.md
您可以使用如下所示的代码。
clock_t start = clock();
// Code here...
clock_t ticks = clock()-start;
std::cout << "Time Taken:" << (double)ticks/CLOCKS_PER_SEC << "n";
一种可能性是自己生成程序(CreateProcess
在Windows上,fork
在类Unix系统上)。然后,等待孩子退出(在Windows上WaitForSingleObject
,在Unix上waitpid
)。最后,获取子进程的时间(在Windows上GetProcessTimes
,在Unix上times
)。
这将以毫秒为单位给出时间,并将墙壁时间与 CPU 时间分开。当您在同一系统上同时运行其他东西时,后者特别方便(使用静态系统仍然可以获得更好的准确性,但可以保持相当接近)。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 使用简单类型列表实现的指数编译时间.为什么
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 在已经使用Git的情况下减少编译时间
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 从文本文件中读取时钟时间和事件时间并进行处理
- 具有未知值时的时间复杂性
- 如何减少花费的时间
- C++在变量给定的指定时间内关闭电脑
- 系统时间从何而来?
- timeGetTime是衡量游戏循环时间的好方法吗
- 如何衡量程序所花费的时间
- 嵌套循环的时间复杂度:cn(n+1)/2从何而来
- C++中内存泄漏本身存在多长时间,以及等效的Java程序有何不同
- 如何衡量管理内存所花费的时间