如何在C ++中检查已用时间和分配的内存?

时间:2015-12-02 21:49:24

标签: c++

我们假设我们有一个在单个线程上执行的程序C ++。

分配内存?

如何检查此程序分配的内存量,例如使用一个函数返回在给定的执行实例中分配给此(单线程)程序的字节数。

.
.
.
std::cout << memoryallocated() << endl;
.
.

时间流逝?

计算执行一组指令的时间(以milisecs为单位)的最精确方法是什么?

1 个答案:

答案 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时间百分比,等