C ++程序存储器计算

时间:2012-05-18 00:58:12

标签: c++ visual-c++

如何在运行时计算某个程序所用的时间和内存?

我是C ++的初学者。我已经看到很多答案和不同的代码用于我的问题,但所有这些我都不明白。有没有一种简单的方法可以做到这一点?

如果有更复杂的方法,请附上说明。

感谢。

2 个答案:

答案 0 :(得分:2)

现在还没有(也没有)一个通用的工具可以告诉你在没有实际运行它的情况下任意程序需要多长时间,这在一般情况下可能需要永远。这是一个有趣的CS概念来冥想:

http://en.wikipedia.org/wiki/Halting_problem

简而言之:除非您在相当严格且在数学上严格的环境下运行,并且在提供某些保证的系统上对您的代码进行了适当的风格化,否则无法提前知道您的程序运行所需的时间: / p>

http://en.wikipedia.org/wiki/Real-time_operating_system

如果您有经验,可以通过查看数据结构的大小及其数量,来 sorta-kinda 估算程序内存占用的规模。 C ++运算符sizeof可以帮助您确定任何单个对象消耗的具体字节数,但它不会告诉您有关用于幕后“簿记”的内存量。

但是,再一次,你只需要运行它并使用进程监视器来查看会发生什么。很难预测,你只需凭经验检查实践中发生的事情:

Tracking CPU and Memory usage per process(Windows)

monitor a program's memory usage in Linux

答案 1 :(得分:0)

如果您使用的是Windows,则内置的Windows任务管理器会在“进程”选项卡中显示您的内存使用情况。同样,Mac OSX有“活动监视器”,它将显示您的内存使用情况。当程序改变状态时,程序中的数字将实时变化,并分配/释放内存。

至于测量执行时间,可以使用定时器功能获取执行前后的当前系统时间,然后进行数学运算。

Windows的{p> QueryPerformanceCounterQueryPerformanceFrequency以及mac / linux机器上的gettimeofday

如果您需要有关应用程序的更多特定性能相关信息,则AMD CodeAnalyst等分析应用程序可以帮助您找出主要瓶颈所在。