我们假设我们有一个在单个线程上执行的程序C ++。
如何检查此程序分配的内存量,例如使用一个函数返回在给定的执行实例中分配给此(单线程)程序的字节数。
.
.
.
std::cout << memoryallocated() << endl;
.
.
计算执行一组指令的时间(以milisecs为单位)的最精确方法是什么?
答案 0 :(得分:1)
没有标准的C ++接口(或C接口)来了解应用程序的时间或内存使用情况。可能存在特定操作系统的接口以查找内存使用情况 - 例如,在Linux中,您可以阅读/proc/$PID/status
并查找VmSize
以查找当前进程的总大小。其他操作系统有各种其他技术。
标准C运行时通常有一个clock
函数,它可以提供相当精确的时序 - 但测量的时间取决于系统 - 有时它是CPU时间(例如Linux和其他Unix类型)和有时它是经过的时间(例如Windows)。
有各种各样的C ++ 11计时功能,可以为您提供待机时间。 std::chrono
功能将有助于此。对于短的duratins,high_resolution_clock
可能非常有用。
此steady_clock
引用提供example如何使用chrono
功能。
当然,如果您只想查看Unix / Linux进程的总内存,可以使用/usr/bin/time -v some-prog
- 这将显示所有统计信息,包括内存使用情况,CPU时间,CPU时间百分比,等